From 7bf7e4a8ac244668c95000a2b55490dcfcc02354 Mon Sep 17 00:00:00 2001 From: Sangu Manideep Reddy Date: Thu, 9 Apr 2026 09:48:29 +0530 Subject: [PATCH 1/2] pulled upstream --- .../blocks/accordion-item/index.php | 75 + src/wp-includes/blocks/accordion/index.php | 45 + src/wp-includes/blocks/archives/index.php | 174 + src/wp-includes/blocks/avatar/index.php | 166 + src/wp-includes/blocks/block/index.php | 131 + src/wp-includes/blocks/breadcrumbs/index.php | 611 + src/wp-includes/blocks/button/index.php | 79 + src/wp-includes/blocks/calendar/index.php | 189 + src/wp-includes/blocks/categories/index.php | 159 + .../blocks/comment-author-name/index.php | 69 + .../blocks/comment-content/index.php | 85 + src/wp-includes/blocks/comment-date/index.php | 64 + .../blocks/comment-edit-link/index.php | 65 + .../blocks/comment-reply-link/index.php | 87 + .../blocks/comment-template/index.php | 153 + .../blocks/comments-pagination-next/index.php | 64 + .../comments-pagination-numbers/index.php | 66 + .../comments-pagination-previous/index.php | 57 + .../blocks/comments-pagination/index.php | 55 + .../blocks/comments-title/index.php | 100 + src/wp-includes/blocks/comments/index.php | 227 + src/wp-includes/blocks/cover/index.php | 207 + src/wp-includes/blocks/file/index.php | 67 + src/wp-includes/blocks/footnotes/index.php | 143 + src/wp-includes/blocks/gallery/index.php | 183 + src/wp-includes/blocks/heading/index.php | 56 + src/wp-includes/blocks/home-link/index.php | 176 + src/wp-includes/blocks/image/index.php | 385 + .../blocks/latest-comments/index.php | 171 + src/wp-includes/blocks/latest-posts/index.php | 275 + .../blocks/legacy-widget/index.php | 157 + src/wp-includes/blocks/list/index.php | 54 + src/wp-includes/blocks/loginout/index.php | 61 + src/wp-includes/blocks/media-text/index.php | 131 + .../blocks/navigation-link/index.php | 488 + .../blocks/navigation-submenu/index.php | 329 + src/wp-includes/blocks/navigation/index.php | 1791 ++ .../blocks/page-list-item/index.php | 16 + src/wp-includes/blocks/page-list/index.php | 370 + src/wp-includes/blocks/paragraph/index.php | 48 + src/wp-includes/blocks/pattern/index.php | 72 + .../blocks/post-author-biography/index.php | 53 + .../blocks/post-author-name/index.php | 63 + src/wp-includes/blocks/post-author/index.php | 81 + .../blocks/post-comments-count/index.php | 49 + .../blocks/post-comments-form/index.php | 88 + .../blocks/post-comments-link/index.php | 75 + src/wp-includes/blocks/post-content/index.php | 86 + src/wp-includes/blocks/post-date/index.php | 106 + src/wp-includes/blocks/post-excerpt/index.php | 126 + .../blocks/post-featured-image/index.php | 269 + .../blocks/post-navigation-link/index.php | 139 + .../blocks/post-template/index.php | 162 + src/wp-includes/blocks/post-terms/index.php | 130 + .../blocks/post-time-to-read/index.php | 185 + src/wp-includes/blocks/post-title/index.php | 74 + .../blocks/query-no-results/index.php | 65 + .../blocks/query-pagination-next/index.php | 102 + .../blocks/query-pagination-numbers/index.php | 133 + .../query-pagination-previous/index.php | 95 + .../blocks/query-pagination/index.php | 51 + src/wp-includes/blocks/query-title/index.php | 103 + src/wp-includes/blocks/query-total/index.php | 90 + src/wp-includes/blocks/query/index.php | 152 + src/wp-includes/blocks/read-more/index.php | 63 + src/wp-includes/blocks/rss/index.php | 145 + src/wp-includes/blocks/search/index.php | 621 + src/wp-includes/blocks/shortcode/index.php | 35 + src/wp-includes/blocks/site-logo/index.php | 234 + src/wp-includes/blocks/site-tagline/index.php | 53 + src/wp-includes/blocks/site-title/index.php | 69 + src/wp-includes/blocks/social-link/index.php | 408 + src/wp-includes/blocks/tag-cloud/index.php | 63 + .../blocks/template-part/index.php | 307 + src/wp-includes/blocks/term-count/index.php | 80 + .../blocks/term-description/index.php | 61 + src/wp-includes/blocks/term-name/index.php | 81 + .../blocks/term-template/index.php | 137 + src/wp-includes/blocks/video/index.php | 91 + src/wp-includes/blocks/widget-group/index.php | 93 + .../build/pages/site-editor-v2/loader.js | 1 + .../pages/site-editor-v2/page-wp-admin.php | 292 + .../build/pages/site-editor-v2/page.php | 330 + src/wp-includes/build/routes/home/route.js | 46 + .../build/routes/home/route.min.asset.php | 1 + .../build/routes/home/route.min.js | 1 + .../build/routes/navigation-edit/content.js | 526 + .../navigation-edit/content.min.asset.php | 1 + .../routes/navigation-edit/content.min.js | 1 + .../build/routes/navigation-edit/route.js | 121 + .../navigation-edit/route.min.asset.php | 1 + .../build/routes/navigation-edit/route.min.js | 1 + .../build/routes/navigation-list/content.js | 17114 ++++++++++++++ .../navigation-list/content.min.asset.php | 1 + .../routes/navigation-list/content.min.js | 14 + .../build/routes/navigation-list/route.js | 105 + .../navigation-list/route.min.asset.php | 1 + .../build/routes/navigation-list/route.min.js | 1 + .../build/routes/navigation/route.js | 10 + .../routes/navigation/route.min.asset.php | 1 + .../build/routes/navigation/route.min.js | 1 + .../build/routes/pattern-list/content.js | 17673 ++++++++++++++ .../routes/pattern-list/content.min.asset.php | 1 + .../build/routes/pattern-list/content.min.js | 14 + .../build/routes/pattern-list/route.js | 41 + .../routes/pattern-list/route.min.asset.php | 1 + .../build/routes/pattern-list/route.min.js | 1 + src/wp-includes/build/routes/pattern/route.js | 16 + .../build/routes/pattern/route.min.asset.php | 1 + .../build/routes/pattern/route.min.js | 1 + .../build/routes/post-edit/route.js | 111 + .../routes/post-edit/route.min.asset.php | 1 + .../build/routes/post-edit/route.min.js | 1 + .../build/routes/post-list/content.js | 17220 ++++++++++++++ .../routes/post-list/content.min.asset.php | 1 + .../build/routes/post-list/content.min.js | 14 + .../build/routes/post-list/route.js | 298 + .../routes/post-list/route.min.asset.php | 1 + .../build/routes/post-list/route.min.js | 1 + .../build/routes/post-new/route.js | 70 + .../build/routes/post-new/route.min.asset.php | 1 + .../build/routes/post-new/route.min.js | 1 + src/wp-includes/build/routes/post/route.js | 17 + .../build/routes/post/route.min.asset.php | 1 + .../build/routes/post/route.min.js | 1 + .../build/routes/styles/content.js | 332 + .../build/routes/styles/content.min.asset.php | 1 + .../build/routes/styles/content.min.js | 1 + src/wp-includes/build/routes/styles/route.js | 49 + .../build/routes/styles/route.min.asset.php | 1 + .../build/routes/styles/route.min.js | 1 + .../build/routes/template-list/content.js | 19284 ++++++++++++++++ .../template-list/content.min.asset.php | 1 + .../build/routes/template-list/content.min.js | 14 + .../build/routes/template-list/route.js | 245 + .../routes/template-list/route.min.asset.php | 1 + .../build/routes/template-list/route.min.js | 1 + .../routes/template-part-list/content.js | 17540 ++++++++++++++ .../template-part-list/content.min.asset.php | 1 + .../routes/template-part-list/content.min.js | 14 + .../build/routes/template-part-list/route.js | 237 + .../template-part-list/route.min.asset.php | 1 + .../routes/template-part-list/route.min.js | 1 + .../build/routes/template-part/route.js | 16 + .../routes/template-part/route.min.asset.php | 1 + .../build/routes/template-part/route.min.js | 1 + .../build/routes/template/route.js | 17 + .../build/routes/template/route.min.asset.php | 1 + .../build/routes/template/route.min.js | 1 + 149 files changed, 104739 insertions(+) create mode 100644 src/wp-includes/blocks/accordion-item/index.php create mode 100644 src/wp-includes/blocks/accordion/index.php create mode 100644 src/wp-includes/blocks/archives/index.php create mode 100644 src/wp-includes/blocks/avatar/index.php create mode 100644 src/wp-includes/blocks/block/index.php create mode 100644 src/wp-includes/blocks/breadcrumbs/index.php create mode 100644 src/wp-includes/blocks/button/index.php create mode 100644 src/wp-includes/blocks/calendar/index.php create mode 100644 src/wp-includes/blocks/categories/index.php create mode 100644 src/wp-includes/blocks/comment-author-name/index.php create mode 100644 src/wp-includes/blocks/comment-content/index.php create mode 100644 src/wp-includes/blocks/comment-date/index.php create mode 100644 src/wp-includes/blocks/comment-edit-link/index.php create mode 100644 src/wp-includes/blocks/comment-reply-link/index.php create mode 100644 src/wp-includes/blocks/comment-template/index.php create mode 100644 src/wp-includes/blocks/comments-pagination-next/index.php create mode 100644 src/wp-includes/blocks/comments-pagination-numbers/index.php create mode 100644 src/wp-includes/blocks/comments-pagination-previous/index.php create mode 100644 src/wp-includes/blocks/comments-pagination/index.php create mode 100644 src/wp-includes/blocks/comments-title/index.php create mode 100644 src/wp-includes/blocks/comments/index.php create mode 100644 src/wp-includes/blocks/cover/index.php create mode 100644 src/wp-includes/blocks/file/index.php create mode 100644 src/wp-includes/blocks/footnotes/index.php create mode 100644 src/wp-includes/blocks/gallery/index.php create mode 100644 src/wp-includes/blocks/heading/index.php create mode 100644 src/wp-includes/blocks/home-link/index.php create mode 100644 src/wp-includes/blocks/image/index.php create mode 100644 src/wp-includes/blocks/latest-comments/index.php create mode 100644 src/wp-includes/blocks/latest-posts/index.php create mode 100644 src/wp-includes/blocks/legacy-widget/index.php create mode 100644 src/wp-includes/blocks/list/index.php create mode 100644 src/wp-includes/blocks/loginout/index.php create mode 100644 src/wp-includes/blocks/media-text/index.php create mode 100644 src/wp-includes/blocks/navigation-link/index.php create mode 100644 src/wp-includes/blocks/navigation-submenu/index.php create mode 100644 src/wp-includes/blocks/navigation/index.php create mode 100644 src/wp-includes/blocks/page-list-item/index.php create mode 100644 src/wp-includes/blocks/page-list/index.php create mode 100644 src/wp-includes/blocks/paragraph/index.php create mode 100644 src/wp-includes/blocks/pattern/index.php create mode 100644 src/wp-includes/blocks/post-author-biography/index.php create mode 100644 src/wp-includes/blocks/post-author-name/index.php create mode 100644 src/wp-includes/blocks/post-author/index.php create mode 100644 src/wp-includes/blocks/post-comments-count/index.php create mode 100644 src/wp-includes/blocks/post-comments-form/index.php create mode 100644 src/wp-includes/blocks/post-comments-link/index.php create mode 100644 src/wp-includes/blocks/post-content/index.php create mode 100644 src/wp-includes/blocks/post-date/index.php create mode 100644 src/wp-includes/blocks/post-excerpt/index.php create mode 100644 src/wp-includes/blocks/post-featured-image/index.php create mode 100644 src/wp-includes/blocks/post-navigation-link/index.php create mode 100644 src/wp-includes/blocks/post-template/index.php create mode 100644 src/wp-includes/blocks/post-terms/index.php create mode 100644 src/wp-includes/blocks/post-time-to-read/index.php create mode 100644 src/wp-includes/blocks/post-title/index.php create mode 100644 src/wp-includes/blocks/query-no-results/index.php create mode 100644 src/wp-includes/blocks/query-pagination-next/index.php create mode 100644 src/wp-includes/blocks/query-pagination-numbers/index.php create mode 100644 src/wp-includes/blocks/query-pagination-previous/index.php create mode 100644 src/wp-includes/blocks/query-pagination/index.php create mode 100644 src/wp-includes/blocks/query-title/index.php create mode 100644 src/wp-includes/blocks/query-total/index.php create mode 100644 src/wp-includes/blocks/query/index.php create mode 100644 src/wp-includes/blocks/read-more/index.php create mode 100644 src/wp-includes/blocks/rss/index.php create mode 100644 src/wp-includes/blocks/search/index.php create mode 100644 src/wp-includes/blocks/shortcode/index.php create mode 100644 src/wp-includes/blocks/site-logo/index.php create mode 100644 src/wp-includes/blocks/site-tagline/index.php create mode 100644 src/wp-includes/blocks/site-title/index.php create mode 100644 src/wp-includes/blocks/social-link/index.php create mode 100644 src/wp-includes/blocks/tag-cloud/index.php create mode 100644 src/wp-includes/blocks/template-part/index.php create mode 100644 src/wp-includes/blocks/term-count/index.php create mode 100644 src/wp-includes/blocks/term-description/index.php create mode 100644 src/wp-includes/blocks/term-name/index.php create mode 100644 src/wp-includes/blocks/term-template/index.php create mode 100644 src/wp-includes/blocks/video/index.php create mode 100644 src/wp-includes/blocks/widget-group/index.php create mode 100644 src/wp-includes/build/pages/site-editor-v2/loader.js create mode 100644 src/wp-includes/build/pages/site-editor-v2/page-wp-admin.php create mode 100644 src/wp-includes/build/pages/site-editor-v2/page.php create mode 100644 src/wp-includes/build/routes/home/route.js create mode 100644 src/wp-includes/build/routes/home/route.min.asset.php create mode 100644 src/wp-includes/build/routes/home/route.min.js create mode 100644 src/wp-includes/build/routes/navigation-edit/content.js create mode 100644 src/wp-includes/build/routes/navigation-edit/content.min.asset.php create mode 100644 src/wp-includes/build/routes/navigation-edit/content.min.js create mode 100644 src/wp-includes/build/routes/navigation-edit/route.js create mode 100644 src/wp-includes/build/routes/navigation-edit/route.min.asset.php create mode 100644 src/wp-includes/build/routes/navigation-edit/route.min.js create mode 100644 src/wp-includes/build/routes/navigation-list/content.js create mode 100644 src/wp-includes/build/routes/navigation-list/content.min.asset.php create mode 100644 src/wp-includes/build/routes/navigation-list/content.min.js create mode 100644 src/wp-includes/build/routes/navigation-list/route.js create mode 100644 src/wp-includes/build/routes/navigation-list/route.min.asset.php create mode 100644 src/wp-includes/build/routes/navigation-list/route.min.js create mode 100644 src/wp-includes/build/routes/navigation/route.js create mode 100644 src/wp-includes/build/routes/navigation/route.min.asset.php create mode 100644 src/wp-includes/build/routes/navigation/route.min.js create mode 100644 src/wp-includes/build/routes/pattern-list/content.js create mode 100644 src/wp-includes/build/routes/pattern-list/content.min.asset.php create mode 100644 src/wp-includes/build/routes/pattern-list/content.min.js create mode 100644 src/wp-includes/build/routes/pattern-list/route.js create mode 100644 src/wp-includes/build/routes/pattern-list/route.min.asset.php create mode 100644 src/wp-includes/build/routes/pattern-list/route.min.js create mode 100644 src/wp-includes/build/routes/pattern/route.js create mode 100644 src/wp-includes/build/routes/pattern/route.min.asset.php create mode 100644 src/wp-includes/build/routes/pattern/route.min.js create mode 100644 src/wp-includes/build/routes/post-edit/route.js create mode 100644 src/wp-includes/build/routes/post-edit/route.min.asset.php create mode 100644 src/wp-includes/build/routes/post-edit/route.min.js create mode 100644 src/wp-includes/build/routes/post-list/content.js create mode 100644 src/wp-includes/build/routes/post-list/content.min.asset.php create mode 100644 src/wp-includes/build/routes/post-list/content.min.js create mode 100644 src/wp-includes/build/routes/post-list/route.js create mode 100644 src/wp-includes/build/routes/post-list/route.min.asset.php create mode 100644 src/wp-includes/build/routes/post-list/route.min.js create mode 100644 src/wp-includes/build/routes/post-new/route.js create mode 100644 src/wp-includes/build/routes/post-new/route.min.asset.php create mode 100644 src/wp-includes/build/routes/post-new/route.min.js create mode 100644 src/wp-includes/build/routes/post/route.js create mode 100644 src/wp-includes/build/routes/post/route.min.asset.php create mode 100644 src/wp-includes/build/routes/post/route.min.js create mode 100644 src/wp-includes/build/routes/styles/content.js create mode 100644 src/wp-includes/build/routes/styles/content.min.asset.php create mode 100644 src/wp-includes/build/routes/styles/content.min.js create mode 100644 src/wp-includes/build/routes/styles/route.js create mode 100644 src/wp-includes/build/routes/styles/route.min.asset.php create mode 100644 src/wp-includes/build/routes/styles/route.min.js create mode 100644 src/wp-includes/build/routes/template-list/content.js create mode 100644 src/wp-includes/build/routes/template-list/content.min.asset.php create mode 100644 src/wp-includes/build/routes/template-list/content.min.js create mode 100644 src/wp-includes/build/routes/template-list/route.js create mode 100644 src/wp-includes/build/routes/template-list/route.min.asset.php create mode 100644 src/wp-includes/build/routes/template-list/route.min.js create mode 100644 src/wp-includes/build/routes/template-part-list/content.js create mode 100644 src/wp-includes/build/routes/template-part-list/content.min.asset.php create mode 100644 src/wp-includes/build/routes/template-part-list/content.min.js create mode 100644 src/wp-includes/build/routes/template-part-list/route.js create mode 100644 src/wp-includes/build/routes/template-part-list/route.min.asset.php create mode 100644 src/wp-includes/build/routes/template-part-list/route.min.js create mode 100644 src/wp-includes/build/routes/template-part/route.js create mode 100644 src/wp-includes/build/routes/template-part/route.min.asset.php create mode 100644 src/wp-includes/build/routes/template-part/route.min.js create mode 100644 src/wp-includes/build/routes/template/route.js create mode 100644 src/wp-includes/build/routes/template/route.min.asset.php create mode 100644 src/wp-includes/build/routes/template/route.min.js diff --git a/src/wp-includes/blocks/accordion-item/index.php b/src/wp-includes/blocks/accordion-item/index.php new file mode 100644 index 0000000000000..37306c61fcb85 --- /dev/null +++ b/src/wp-includes/blocks/accordion-item/index.php @@ -0,0 +1,75 @@ + function () { + $context = wp_interactivity_get_context(); + return $context['openByDefault']; + }, + ) + ); + + if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-item' ) ) ) { + $open_by_default = $attributes['openByDefault'] ? 'true' : 'false'; + $p->set_attribute( 'data-wp-context', '{ "id": "' . $unique_id . '", "openByDefault": ' . $open_by_default . ' }' ); + $p->set_attribute( 'data-wp-class--is-open', 'state.isOpen' ); + $p->set_attribute( 'data-wp-init', 'callbacks.initAccordionItems' ); + $p->set_attribute( 'data-wp-on-window--hashchange', 'callbacks.hashChange' ); + + 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' ); + + if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-panel' ) ) ) { + $p->set_attribute( 'id', $unique_id . '-panel' ); + $p->set_attribute( 'aria-labelledby', $unique_id ); + $p->set_attribute( 'data-wp-bind--inert', '!state.isOpen' ); + + // Only modify content if all directives have been set. + $content = $p->get_updated_html(); + } + } + } + + return $content; +} + +/** + * Registers the `core/accordion-item` block on server. + * + * @since 6.9.0 + */ +function register_block_core_accordion_item() { + register_block_type_from_metadata( + __DIR__ . '/accordion-item', + array( + 'render_callback' => 'block_core_accordion_item_render', + ) + ); +} +add_action( 'init', 'register_block_core_accordion_item' ); diff --git a/src/wp-includes/blocks/accordion/index.php b/src/wp-includes/blocks/accordion/index.php new file mode 100644 index 0000000000000..537904a6e402d --- /dev/null +++ b/src/wp-includes/blocks/accordion/index.php @@ -0,0 +1,45 @@ +next_tag( array( 'class_name' => 'wp-block-accordion' ) ) ) { + $p->set_attribute( 'data-wp-interactive', 'core/accordion' ); + $p->set_attribute( 'data-wp-context', '{ "autoclose": ' . $autoclose . ', "accordionItems": [] }' ); + + // Only modify content if directives have been set. + $content = $p->get_updated_html(); + } + + return $content; +} + +/** + * Registers the `core/accordion` block on server. + * + * @since 6.9.0 + */ +function register_block_core_accordion() { + register_block_type_from_metadata( + __DIR__ . '/accordion', + array( + 'render_callback' => 'render_block_core_accordion', + ) + ); +} +add_action( 'init', 'register_block_core_accordion' ); diff --git a/src/wp-includes/blocks/archives/index.php b/src/wp-includes/blocks/archives/index.php new file mode 100644 index 0000000000000..cead720f7fb80 --- /dev/null +++ b/src/wp-includes/blocks/archives/index.php @@ -0,0 +1,174 @@ + $type, + 'format' => 'option', + 'show_post_count' => $show_post_count, + ) + ); + + $dropdown_args['echo'] = 0; + + $archives = wp_get_archives( $dropdown_args ); + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) ); + + switch ( $dropdown_args['type'] ) { + case 'yearly': + $label = __( 'Select Year' ); + break; + case 'monthly': + $label = __( 'Select Month' ); + break; + case 'daily': + $label = __( 'Select Day' ); + break; + case 'weekly': + $label = __( 'Select Week' ); + break; + default: + $label = __( 'Select Post' ); + break; + } + + $show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : ''; + + $block_content = ' + '; + + // Inject the dropdown script immediately after the select dropdown. + $block_content .= block_core_archives_build_dropdown_script( $dropdown_id ); + + return sprintf( + '
%2$s
', + $wrapper_attributes, + $block_content + ); + } + + /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */ + $archives_args = apply_filters( + 'widget_archives_args', + array( + 'type' => $type, + 'show_post_count' => $show_post_count, + ) + ); + + $archives_args['echo'] = 0; + + $archives = wp_get_archives( $archives_args ); + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) ); + + if ( empty( $archives ) ) { + return sprintf( + '
%2$s
', + $wrapper_attributes, + __( 'No archives to show.' ) + ); + } + + return sprintf( + '', + $wrapper_attributes, + $archives + ); +} + +/** + * Generates the inline script for an archives dropdown field. + * + * @since 6.9.0 + * + * @param string $dropdown_id ID of the dropdown field. + * + * @return string Returns the dropdown onChange redirection script. + */ +function block_core_archives_build_dropdown_script( $dropdown_id ) { + ob_start(); + + $exports = array( $dropdown_id, home_url() ); + ?> + + ', '' ), '', ob_get_clean() ) ) . + "\n//# sourceURL=" . rawurlencode( __FUNCTION__ ) + ); +} + +/** + * Register archives block. + * + * @since 5.0.0 + */ +function register_block_core_archives() { + register_block_type_from_metadata( + __DIR__ . '/archives', + array( + 'render_callback' => 'render_block_core_archives', + ) + ); +} +add_action( 'init', 'register_block_core_archives' ); diff --git a/src/wp-includes/blocks/avatar/index.php b/src/wp-includes/blocks/avatar/index.php new file mode 100644 index 0000000000000..7f73370973d42 --- /dev/null +++ b/src/wp-includes/blocks/avatar/index.php @@ -0,0 +1,166 @@ +context['commentId'] ) ) { + if ( isset( $attributes['userId'] ) ) { + $author_id = $attributes['userId']; + } elseif ( isset( $block->context['postId'] ) ) { + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + } else { + $author_id = get_query_var( 'author' ); + } + + if ( empty( $author_id ) ) { + return ''; + } + + $author_name = get_the_author_meta( 'display_name', $author_id ); + // translators: %s: Author name. + $alt = sprintf( __( '%s Avatar' ), $author_name ); + $avatar_block = get_avatar( + $author_id, + $size, + '', + $alt, + array( + 'extra_attr' => $image_styles, + 'class' => $image_classes, + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s is the Author name. + $label = 'aria-label="' . esc_attr( sprintf( __( '(%s author archive, opens in a new tab)' ), $author_name ) ) . '"'; + } + // translators: 1: Author archive link. 2: Link target. %3$s Aria label. %4$s Avatar image. + $avatar_block = sprintf( '%4$s', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '
%2s
', $wrapper_attributes, $avatar_block ); + } + $comment = get_comment( $block->context['commentId'] ); + if ( ! $comment ) { + return ''; + } + /* translators: %s: Author name. */ + $alt = sprintf( __( '%s Avatar' ), $comment->comment_author ); + $avatar_block = get_avatar( + $comment, + $size, + '', + $alt, + array( + 'extra_attr' => $image_styles, + 'class' => $image_classes, + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s: Comment author name. + $label = 'aria-label="' . esc_attr( sprintf( __( '(%s website link, opens in a new tab)' ), $comment->comment_author ) ) . '"'; + } + $avatar_block = sprintf( '%4$s', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '
%2s
', $wrapper_attributes, $avatar_block ); +} + +/** + * Generates class names and styles to apply the border support styles for + * the Avatar block. + * + * @since 6.3.0 + * + * @param array $attributes The block attributes. + * @return array The border-related classnames and styles for the block. + */ +function get_block_core_avatar_border_attributes( $attributes ) { + $border_styles = array(); + $sides = array( 'top', 'right', 'bottom', 'left' ); + + // Border radius. + if ( isset( $attributes['style']['border']['radius'] ) ) { + $border_styles['radius'] = $attributes['style']['border']['radius']; + } + + // Border style. + if ( isset( $attributes['style']['border']['style'] ) ) { + $border_styles['style'] = $attributes['style']['border']['style']; + } + + // Border width. + if ( isset( $attributes['style']['border']['width'] ) ) { + $border_styles['width'] = $attributes['style']['border']['width']; + } + + // Border color. + $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null; + $custom_color = $attributes['style']['border']['color'] ?? null; + $border_styles['color'] = $preset_color ? $preset_color : $custom_color; + + // Individual border styles e.g. top, left etc. + foreach ( $sides as $side ) { + $border = $attributes['style']['border'][ $side ] ?? null; + $border_styles[ $side ] = array( + 'color' => $border['color'] ?? null, + 'style' => $border['style'] ?? null, + 'width' => $border['width'] ?? null, + ); + } + + $styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) ); + $attributes = array(); + if ( ! empty( $styles['classnames'] ) ) { + $attributes['class'] = $styles['classnames']; + } + if ( ! empty( $styles['css'] ) ) { + $attributes['style'] = $styles['css']; + } + return $attributes; +} + +/** + * Registers the `core/avatar` block on the server. + * + * @since 6.0.0 + */ +function register_block_core_avatar() { + register_block_type_from_metadata( + __DIR__ . '/avatar', + array( + 'render_callback' => 'render_block_core_avatar', + ) + ); +} +add_action( 'init', 'register_block_core_avatar' ); diff --git a/src/wp-includes/blocks/block/index.php b/src/wp-includes/blocks/block/index.php new file mode 100644 index 0000000000000..f09d5367a9c89 --- /dev/null +++ b/src/wp-includes/blocks/block/index.php @@ -0,0 +1,131 @@ +post_type ) { + return ''; + } + + if ( isset( $seen_refs[ $attributes['ref'] ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + if ( 'publish' !== $reusable_block->post_status || ! empty( $reusable_block->post_password ) ) { + return ''; + } + + $seen_refs[ $attributes['ref'] ] = true; + + // Handle embeds for reusable blocks. + global $wp_embed; + $content = $wp_embed->run_shortcode( $reusable_block->post_content ); + $content = $wp_embed->autoembed( $content ); + + // Back compat. + // For blocks that have not been migrated in the editor, add some back compat + // so that front-end rendering continues to work. + + // This matches the `v2` deprecation. Removes the inner `values` property + // from every item. + if ( isset( $attributes['content'] ) ) { + foreach ( $attributes['content'] as &$content_data ) { + if ( isset( $content_data['values'] ) ) { + $is_assoc_array = is_array( $content_data['values'] ) && ! wp_is_numeric_array( $content_data['values'] ); + + if ( $is_assoc_array ) { + $content_data = $content_data['values']; + } + } + } + } + + // This matches the `v1` deprecation. Rename `overrides` to `content`. + if ( isset( $attributes['overrides'] ) && ! isset( $attributes['content'] ) ) { + $attributes['content'] = $attributes['overrides']; + } + + // Apply Block Hooks. + $content = apply_block_hooks_to_content_from_post_object( $content, $reusable_block ); + + /** + * We attach the blocks from $content as inner blocks to the Synced Pattern block instance. + * This ensures that block context available to the Synced Pattern block instance is provided to + * those blocks. + */ + $block_instance->parsed_block['innerBlocks'] = parse_blocks( $content ); + $block_instance->parsed_block['innerContent'] = array_fill( 0, count( $block_instance->parsed_block['innerBlocks'] ), null ); + if ( method_exists( $block_instance, 'refresh_context_dependents' ) ) { + // WP_Block::refresh_context_dependents() was introduced in WordPress 6.8. + $block_instance->refresh_context_dependents(); + } else { + // This branch can be removed once Gutenberg requires WordPress 6.8 or later. + if ( ! class_exists( 'WP_Block_Cloner' ) ) { + // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingClassSinceTag + class WP_Block_Cloner extends WP_Block { + /** + * Static methods of subclasses have access to protected properties + * of instances of the parent class. + * In this case, this gives us access to `available_context` and `registry`. + */ + // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingMethodSinceTag + public static function clone_instance( $instance ) { + return new WP_Block( + $instance->parsed_block, + $instance->available_context, + $instance->registry + ); + } + } + } + $block_instance = WP_Block_Cloner::clone_instance( $block_instance ); + } + + $content = $block_instance->render( array( 'dynamic' => false ) ); + unset( $seen_refs[ $attributes['ref'] ] ); + + return $content; +} + +/** + * Registers the `core/block` block. + * + * @since 5.3.0 + */ +function register_block_core_block() { + register_block_type_from_metadata( + __DIR__ . '/block', + array( + 'render_callback' => 'render_block_core_block', + ) + ); +} +add_action( 'init', 'register_block_core_block' ); diff --git a/src/wp-includes/blocks/breadcrumbs/index.php b/src/wp-includes/blocks/breadcrumbs/index.php new file mode 100644 index 0000000000000..c2e5a7f9513e3 --- /dev/null +++ b/src/wp-includes/blocks/breadcrumbs/index.php @@ -0,0 +1,611 @@ + 1 ) ) { + $breadcrumb_items[] = array( + 'label' => __( 'Home' ), + 'url' => home_url( '/' ), + ); + } else { + $breadcrumb_items[] = block_core_breadcrumbs_create_item( __( 'Home' ), block_core_breadcrumbs_is_paged() ); + } + } + + // Handle home. + if ( $is_home ) { + // These checks are explicitly nested in order not to execute the `else` branch. + if ( $page_for_posts ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_item( block_core_breadcrumbs_get_post_title( $page_for_posts ), block_core_breadcrumbs_is_paged() ); + } + if ( block_core_breadcrumbs_is_paged() ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item(); + } + } elseif ( $is_front_page ) { + // Handle front page. + // This check is explicitly nested in order not to execute the `else` branch. + // If front page is set to custom page and is paged, add the page number. + if ( (int) get_query_var( 'page' ) > 1 ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item( 'page' ); + } + } elseif ( is_search() ) { + // Handle search results. + $is_paged = block_core_breadcrumbs_is_paged(); + /* translators: %s: search query */ + $text = sprintf( __( 'Search results for: "%s"' ), wp_trim_words( get_search_query(), 10 ) ); + $breadcrumb_items[] = block_core_breadcrumbs_create_item( $text, $is_paged ); + // Add the "Page X" as the current page if paginated. + if ( $is_paged ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item(); + } + } elseif ( is_404() ) { + // Handle 404 pages. + $breadcrumb_items[] = array( + 'label' => __( 'Page not found' ), + ); + } elseif ( is_archive() ) { + // Handle archive pages (taxonomy, post type, date, author archives). + $archive_breadcrumbs = block_core_breadcrumbs_get_archive_breadcrumbs(); + if ( ! empty( $archive_breadcrumbs ) ) { + $breadcrumb_items = array_merge( $breadcrumb_items, $archive_breadcrumbs ); + } + } else { + // Handle single post/page breadcrumbs. + if ( ! isset( $block->context['postId'] ) || ! isset( $block->context['postType'] ) ) { + return ''; + } + + $post_id = $block->context['postId']; + $post_type = $block->context['postType']; + + $post = get_post( $post_id ); + if ( ! $post ) { + return ''; + } + + // For non-hierarchical post types with parents (e.g., attachments), build trail for the parent. + $post_parent = $post->post_parent; + $parent_post = null; + if ( ! is_post_type_hierarchical( $post_type ) && $post_parent ) { + $parent_post = get_post( $post_parent ); + if ( $parent_post ) { + $post_id = $parent_post->ID; + $post_type = $parent_post->post_type; + $post_parent = $parent_post->post_parent; + } + } + + // Determine breadcrumb type. + // Some non-hierarchical post types (e.g., attachments) can have parents. + // Use hierarchical breadcrumbs if a parent exists, otherwise use taxonomy breadcrumbs. + $show_terms = false; + if ( ! is_post_type_hierarchical( $post_type ) && ! $post_parent ) { + $show_terms = true; + } elseif ( empty( get_object_taxonomies( $post_type, 'objects' ) ) ) { + $show_terms = false; + } else { + $show_terms = $attributes['prefersTaxonomy']; + } + + // Add post type archive link if applicable. + $post_type_object = get_post_type_object( $post_type ); + $archive_link = get_post_type_archive_link( $post_type ); + if ( $archive_link && untrailingslashit( home_url() ) !== untrailingslashit( $archive_link ) ) { + $label = $post_type_object->labels->archives; + if ( 'post' === $post_type && $page_for_posts ) { + $label = block_core_breadcrumbs_get_post_title( $page_for_posts ); + } + $breadcrumb_items[] = array( + 'label' => $label, + 'url' => $archive_link, + ); + } + // Build breadcrumb trail based on hierarchical structure or taxonomy terms. + if ( ! $show_terms ) { + $breadcrumb_items = array_merge( $breadcrumb_items, block_core_breadcrumbs_get_hierarchical_post_type_breadcrumbs( $post_id ) ); + } else { + $breadcrumb_items = array_merge( $breadcrumb_items, block_core_breadcrumbs_get_terms_breadcrumbs( $post_id, $post_type ) ); + } + + // Add post title: linked when viewing a paginated page, plain text otherwise. + $is_paged = (int) get_query_var( 'page' ) > 1 || (int) get_query_var( 'cpage' ) > 1; + $title = block_core_breadcrumbs_get_post_title( $post ); + + if ( $is_paged ) { + $breadcrumb_items[] = array( + 'label' => $title, + 'url' => get_permalink( $post ), + 'allow_html' => true, + ); + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item( (int) get_query_var( 'cpage' ) > 1 ? 'cpage' : 'page' ); + } else { + $breadcrumb_items[] = array( + 'label' => $title, + 'allow_html' => true, + ); + } + } + + // Remove current item if disabled. + if ( ! $attributes['showCurrentItem'] && ! empty( $breadcrumb_items ) ) { + array_pop( $breadcrumb_items ); + } + + /** + * Filters the breadcrumb items array before rendering. + * + * Allows developers to modify, add, or remove breadcrumb items. + * + * @since 7.0.0 + * + * @param array[] $breadcrumb_items { + * Array of breadcrumb item data. + * + * @type string $label The breadcrumb text. + * @type string $url Optional. The breadcrumb link URL. + * @type bool $allow_html Optional. Whether to allow HTML in the label. + * When true, the label will be sanitized with wp_kses_post(), + * allowing only safe HTML tags. When false or omitted, all HTML + * will be escaped with esc_html(). Default false. + * } + */ + $breadcrumb_items = apply_filters( 'block_core_breadcrumbs_items', $breadcrumb_items ); + + if ( empty( $breadcrumb_items ) ) { + return ''; + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'style' => '--separator: "' . addcslashes( $attributes['separator'], '\\"' ) . '";', + 'aria-label' => __( 'Breadcrumbs' ), + ) + ); + + $breadcrumb_html = sprintf( + '', + $wrapper_attributes, + implode( + '', + array_map( + static function ( $item ) { + $label = ! empty( $item['allow_html'] ) ? wp_kses_post( $item['label'] ) : esc_html( $item['label'] ); + if ( ! empty( $item['url'] ) ) { + return '
  • ' . $label . '
  • '; + } + return '
  • ' . $label . '
  • '; + }, + $breadcrumb_items + ) + ) + ); + + return $breadcrumb_html; +} + +/** + * Checks if we're on a paginated view (page 2 or higher). + * + * @since 7.0.0 + * + * @return bool True if paged > 1, false otherwise. + */ +function block_core_breadcrumbs_is_paged() { + $paged = (int) get_query_var( 'paged' ); + return $paged > 1; +} + +/** + * Creates a "Page X" breadcrumb item for paginated views. + * + * @since 7.0.0 + * @param string $query_var Optional. Query variable to get current page number. Default 'paged'. + * @return array The "Page X" breadcrumb item data. + */ +function block_core_breadcrumbs_create_page_number_item( $query_var = 'paged' ) { + $paged = (int) get_query_var( $query_var ); + + if ( 'cpage' === $query_var ) { + return array( + 'label' => sprintf( + /* translators: %s: comment page number */ + __( 'Comments Page %s' ), + number_format_i18n( $paged ) + ), + ); + } + + return array( + 'label' => sprintf( + /* translators: %s: page number */ + __( 'Page %s' ), + number_format_i18n( $paged ) + ), + ); +} + + +/** + * Creates a breadcrumb item that's either a link or current page item. + * + * When paginated (is_paged is true), creates a link to page 1. + * Otherwise, creates a span marked as the current page. + * + * @since 7.0.0 + * + * @param string $text The text content. + * @param bool $is_paged Whether we're on a paginated view. + * + * @return array The breadcrumb item data. + */ +function block_core_breadcrumbs_create_item( $text, $is_paged = false ) { + $item = array( 'label' => $text ); + if ( $is_paged ) { + $item['url'] = get_pagenum_link( 1 ); + } + return $item; +} + +/** + * Gets a post title with fallback for empty titles. + * + * @since 7.0.0 + * + * @param int|WP_Post $post_id_or_object The post ID or post object. + * + * @return string The post title or fallback text. + */ +function block_core_breadcrumbs_get_post_title( $post_id_or_object ) { + $title = get_the_title( $post_id_or_object ); + if ( strlen( $title ) === 0 ) { + $title = __( '(no title)' ); + } + return $title; +} + +/** + * Generates breadcrumb items from hierarchical post type ancestors. + * + * @since 7.0.0 + * + * @param int $post_id The post ID. + * + * @return array Array of breadcrumb item data. + */ +function block_core_breadcrumbs_get_hierarchical_post_type_breadcrumbs( $post_id ) { + $breadcrumb_items = array(); + $ancestors = get_post_ancestors( $post_id ); + $ancestors = array_reverse( $ancestors ); + + foreach ( $ancestors as $ancestor_id ) { + $breadcrumb_items[] = array( + 'label' => block_core_breadcrumbs_get_post_title( $ancestor_id ), + 'url' => get_permalink( $ancestor_id ), + 'allow_html' => true, + ); + } + return $breadcrumb_items; +} + +/** + * Generates breadcrumb items for hierarchical term ancestors. + * + * For hierarchical taxonomies, retrieves and formats ancestor terms as breadcrumb links. + * + * @since 7.0.0 + * + * @param int $term_id The term ID. + * @param string $taxonomy The taxonomy name. + * + * @return array Array of breadcrumb item data for ancestors. + */ +function block_core_breadcrumbs_get_term_ancestors_items( $term_id, $taxonomy ) { + $breadcrumb_items = array(); + + // Check if taxonomy is hierarchical and add ancestor term links. + if ( is_taxonomy_hierarchical( $taxonomy ) ) { + $term_ancestors = get_ancestors( $term_id, $taxonomy, 'taxonomy' ); + $term_ancestors = array_reverse( $term_ancestors ); + foreach ( $term_ancestors as $ancestor_id ) { + $ancestor_term = get_term( $ancestor_id, $taxonomy ); + if ( $ancestor_term && ! is_wp_error( $ancestor_term ) ) { + $breadcrumb_items[] = array( + 'label' => $ancestor_term->name, + 'url' => get_term_link( $ancestor_term ), + ); + } + } + } + + return $breadcrumb_items; +} + +/** + * Generates breadcrumb items for archive pages. + * + * Handles taxonomy archives, post type archives, date archives, and author archives. + * For hierarchical taxonomies, includes ancestor terms in the breadcrumb trail. + * + * @since 7.0.0 + * + * @return array Array of breadcrumb item data. + */ +function block_core_breadcrumbs_get_archive_breadcrumbs() { + $breadcrumb_items = array(); + + // Date archive (check first since it doesn't have a queried object). + if ( is_date() ) { + $year = get_query_var( 'year' ); + $month = get_query_var( 'monthnum' ); + $day = get_query_var( 'day' ); + + // Fallback to 'm' query var for plain permalinks. + // Plain permalinks use ?m=YYYYMMDD format instead of separate query vars. + if ( ! $year ) { + $m = get_query_var( 'm' ); + if ( $m ) { + $year = substr( $m, 0, 4 ); + $month = substr( $m, 4, 2 ); + $day = (int) substr( $m, 6, 2 ); + } + } + + $is_paged = block_core_breadcrumbs_is_paged(); + + if ( $year ) { + if ( $month ) { + // Year is linked if we have month. + $breadcrumb_items[] = array( + 'label' => $year, + 'url' => get_year_link( $year ), + ); + + if ( $day ) { + // Month is linked if we have day. + $breadcrumb_items[] = array( + 'label' => date_i18n( 'F', mktime( 0, 0, 0, $month, 1, $year ) ), + 'url' => get_month_link( $year, $month ), + ); + // Add day (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + $day, + $is_paged + ); + } else { + // Add month (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + date_i18n( 'F', mktime( 0, 0, 0, $month, 1, $year ) ), + $is_paged + ); + } + } else { + // Add year (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + $year, + $is_paged + ); + } + } + + // Add pagination breadcrumb if on a paged date archive. + if ( $is_paged ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item(); + } + + return $breadcrumb_items; + } + + // For other archive types, we need a queried object. + $queried_object = get_queried_object(); + + if ( ! $queried_object ) { + return array(); + } + + $is_paged = block_core_breadcrumbs_is_paged(); + + // Taxonomy archive (category, tag, custom taxonomy). + if ( $queried_object instanceof WP_Term ) { + $term = $queried_object; + $taxonomy = $term->taxonomy; + + // Add hierarchical term ancestors if applicable. + $breadcrumb_items = array_merge( + $breadcrumb_items, + block_core_breadcrumbs_get_term_ancestors_items( $term->term_id, $taxonomy ) + ); + + // Add current term (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + $term->name, + $is_paged + ); + } elseif ( is_post_type_archive() ) { + // Post type archive. + $post_type = get_query_var( 'post_type' ); + if ( is_array( $post_type ) ) { + $post_type = reset( $post_type ); + } + $post_type_object = get_post_type_object( $post_type ); + + /** This filter is documented in wp-includes/general-template.php */ + $title = apply_filters( 'post_type_archive_title', $post_type_object->labels->archives, $post_type ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + + if ( $post_type_object ) { + // Add post type (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + $title ? $title : $post_type_object->labels->archives, + $is_paged + ); + } + } elseif ( is_author() ) { + // Author archive. + $author = $queried_object; + // Add author (current if not paginated, link if paginated). + $breadcrumb_items[] = block_core_breadcrumbs_create_item( + $author->display_name, + $is_paged + ); + } + + // Add pagination breadcrumb if on a paged archive. + if ( $is_paged ) { + $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item(); + } + + return $breadcrumb_items; +} + +/** + * Generates breadcrumb items from taxonomy terms. + * + * Finds the first publicly queryable taxonomy with terms assigned to the post + * and generates breadcrumb links, including hierarchical term ancestors if applicable. + * + * @since 7.0.0 + * + * @param int $post_id The post ID. + * @param string $post_type The post type name. + * + * @return array Array of breadcrumb item data. + */ +function block_core_breadcrumbs_get_terms_breadcrumbs( $post_id, $post_type ) { + $breadcrumb_items = array(); + + // Get public taxonomies for this post type. + $taxonomies = wp_filter_object_list( + get_object_taxonomies( $post_type, 'objects' ), + array( + 'publicly_queryable' => true, + 'show_in_rest' => true, + ) + ); + + if ( empty( $taxonomies ) ) { + return $breadcrumb_items; + } + + /** + * Filters breadcrumb settings (taxonomy and term selection) for a post or post type. + * + * Allows developers to specify which taxonomy and term should be used in the + * breadcrumb trail when a post type has multiple taxonomies or when a post is + * assigned to multiple terms within a taxonomy. + * + * @since 7.0.0 + * + * @param array $settings { + * Array of breadcrumb settings. Default empty array. + * + * @type string $taxonomy Optional. Taxonomy slug to use for breadcrumbs. + * The taxonomy must be registered for the post type and have + * terms assigned to the post. If not found or has no terms, + * fall back to the first available taxonomy with terms. + * @type string $term Optional. Term slug to use when the post has multiple terms + * in the selected taxonomy. If the term is not found or not + * assigned to the post, fall back to the first term. If the + * post has only one term, that term is used regardless. + * } + * @param string $post_type The post type slug. + * @param int $post_id The post ID. + */ + $settings = apply_filters( 'block_core_breadcrumbs_post_type_settings', array(), $post_type, $post_id ); + + $taxonomy_name = null; + $terms = array(); + + // Try preferred taxonomy first if specified. + if ( ! empty( $settings['taxonomy'] ) ) { + foreach ( $taxonomies as $taxonomy ) { + if ( $taxonomy->name === $settings['taxonomy'] ) { + $post_terms = get_the_terms( $post_id, $taxonomy->name ); + if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) { + $taxonomy_name = $taxonomy->name; + $terms = $post_terms; + } + break; + } + } + } + + // If no preferred taxonomy or it didn't have terms, find the first taxonomy with terms. + if ( empty( $terms ) ) { + foreach ( $taxonomies as $taxonomy ) { + $post_terms = get_the_terms( $post_id, $taxonomy->name ); + if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) { + $taxonomy_name = $taxonomy->name; + $terms = $post_terms; + break; + } + } + } + + if ( ! empty( $terms ) ) { + // Select which term to use. + $term = reset( $terms ); + + // Try preferred term if specified and post has multiple terms. + if ( ! empty( $settings['term'] ) && count( $terms ) > 1 ) { + foreach ( $terms as $candidate_term ) { + if ( $candidate_term->slug === $settings['term'] ) { + $term = $candidate_term; + break; + } + } + } + + // Add hierarchical term ancestors if applicable. + $breadcrumb_items = array_merge( + $breadcrumb_items, + block_core_breadcrumbs_get_term_ancestors_items( $term->term_id, $taxonomy_name ) + ); + $breadcrumb_items[] = array( + 'label' => $term->name, + 'url' => get_term_link( $term ), + ); + } + return $breadcrumb_items; +} + +/** + * Registers the `core/breadcrumbs` block on the server. + * + * @since 7.0.0 + */ +function register_block_core_breadcrumbs() { + register_block_type_from_metadata( + __DIR__ . '/breadcrumbs', + array( + 'render_callback' => 'render_block_core_breadcrumbs', + ) + ); +} +add_action( 'init', 'register_block_core_breadcrumbs' ); diff --git a/src/wp-includes/blocks/button/index.php b/src/wp-includes/blocks/button/index.php new file mode 100644 index 0000000000000..0d03440b1cb0f --- /dev/null +++ b/src/wp-includes/blocks/button/index.php @@ -0,0 +1,79 @@ +` or `'; + + $body_content = preg_replace( '/]+>/', $button, $body_content ); + + add_action( 'wp_footer', 'block_core_image_print_lightbox_overlay' ); + + return $body_content; +} + +/** + * @since 6.5.0 + */ +function block_core_image_print_lightbox_overlay() { + $close_button_label = esc_attr__( 'Close' ); + + // If the current theme does NOT have a `theme.json`, or the colors are not + // defined, it needs to set the background color & close button color to some + // default values because it can't get them from the Global Styles. + $background_color = '#fff'; + $close_button_color = '#000'; + if ( wp_theme_has_theme_json() ) { + $global_styles_color = wp_get_global_styles( array( 'color' ) ); + if ( ! empty( $global_styles_color['background'] ) ) { + $background_color = esc_attr( $global_styles_color['background'] ); + } + if ( ! empty( $global_styles_color['text'] ) ) { + $close_button_color = esc_attr( $global_styles_color['text'] ); + } + } + + echo << + + + + + +HTML; +} + +/** + * Registers the `core/image` block on server. + * + * @since 5.9.0 + */ +function register_block_core_image() { + register_block_type_from_metadata( + __DIR__ . '/image', + array( + 'render_callback' => 'render_block_core_image', + ) + ); +} +add_action( 'init', 'register_block_core_image' ); diff --git a/src/wp-includes/blocks/latest-comments/index.php b/src/wp-includes/blocks/latest-comments/index.php new file mode 100644 index 0000000000000..eec7e104533d1 --- /dev/null +++ b/src/wp-includes/blocks/latest-comments/index.php @@ -0,0 +1,171 @@ + $attributes['commentsToShow'], + 'status' => 'approve', + 'post_status' => 'publish', + ), + array() + ) + ); + + $list_items_markup = ''; + if ( ! empty( $comments ) ) { + // Prime the cache for associated posts. This is copied from \WP_Widget_Recent_Comments::widget(). + $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) ); + _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false ); + + foreach ( $comments as $comment ) { + $list_items_markup .= '
  • '; + if ( $attributes['displayAvatar'] ) { + $avatar = get_avatar( + $comment, + 48, + '', + '', + array( + 'class' => 'wp-block-latest-comments__comment-avatar', + ) + ); + if ( $avatar ) { + $list_items_markup .= $avatar; + } + } + + $list_items_markup .= '
    '; + $list_items_markup .= ''; + if ( 'full' === $display_content ) { + $list_items_markup .= '
    ' . wpautop( get_comment_text( $comment ) ) . '
    '; + } elseif ( 'excerpt' === $display_content ) { + $list_items_markup .= '
    ' . wpautop( get_comment_excerpt( $comment ) ) . '
    '; + } + $list_items_markup .= '
  • '; + } + } + + $classnames = array(); + if ( $attributes['displayAvatar'] ) { + $classnames[] = 'has-avatars'; + } + if ( $attributes['displayDate'] ) { + $classnames[] = 'has-dates'; + } + if ( 'none' !== $display_content ) { + $classnames[] = 'has-excerpts'; + } + if ( empty( $comments ) ) { + $classnames[] = 'no-comments'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + + return ! empty( $comments ) ? sprintf( + '
      %2$s
    ', + $wrapper_attributes, + $list_items_markup + ) : sprintf( + '
    %2$s
    ', + $wrapper_attributes, + __( 'No comments to show.' ) + ); +} + +/** + * Registers the `core/latest-comments` block. + * + * @since 5.3.0 + */ +function register_block_core_latest_comments() { + register_block_type_from_metadata( + __DIR__ . '/latest-comments', + array( + 'render_callback' => 'render_block_core_latest_comments', + ) + ); +} + +add_action( 'init', 'register_block_core_latest_comments' ); diff --git a/src/wp-includes/blocks/latest-posts/index.php b/src/wp-includes/blocks/latest-posts/index.php new file mode 100644 index 0000000000000..44231ac6d14a1 --- /dev/null +++ b/src/wp-includes/blocks/latest-posts/index.php @@ -0,0 +1,275 @@ + $attributes['postsToShow'], + 'post_status' => 'publish', + 'order' => $attributes['order'], + 'orderby' => $attributes['orderBy'], + 'ignore_sticky_posts' => true, + 'no_found_rows' => true, + ); + + $block_core_latest_posts_excerpt_length = $attributes['excerptLength']; + add_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 ); + + if ( ! empty( $attributes['categories'] ) ) { + $args['category__in'] = array_column( $attributes['categories'], 'id' ); + } + if ( isset( $attributes['selectedAuthor'] ) ) { + $args['author'] = $attributes['selectedAuthor']; + } + + $query = new WP_Query(); + $recent_posts = $query->query( $args ); + + if ( isset( $attributes['displayFeaturedImage'] ) && $attributes['displayFeaturedImage'] ) { + update_post_thumbnail_cache( $query ); + } + + $list_items_markup = ''; + + foreach ( $recent_posts as $post ) { + $post_link = esc_url( get_permalink( $post ) ); + $title = get_the_title( $post ); + + if ( ! $title ) { + $title = __( '(no title)' ); + } + + $list_items_markup .= '
  • '; + + if ( $attributes['displayFeaturedImage'] && has_post_thumbnail( $post ) ) { + $image_style = ''; + if ( isset( $attributes['featuredImageSizeWidth'] ) ) { + $image_style .= sprintf( 'max-width:%spx;', $attributes['featuredImageSizeWidth'] ); + } + if ( isset( $attributes['featuredImageSizeHeight'] ) ) { + $image_style .= sprintf( 'max-height:%spx;', $attributes['featuredImageSizeHeight'] ); + } + + $image_classes = 'wp-block-latest-posts__featured-image'; + if ( isset( $attributes['featuredImageAlign'] ) ) { + $image_classes .= ' align' . $attributes['featuredImageAlign']; + } + + $featured_image = get_the_post_thumbnail( + $post, + $attributes['featuredImageSizeSlug'], + array( + 'style' => esc_attr( $image_style ), + ) + ); + if ( $attributes['addLinkToFeaturedImage'] ) { + $featured_image = sprintf( + '%3$s', + esc_url( $post_link ), + esc_attr( $title ), + $featured_image + ); + } + $list_items_markup .= sprintf( + '
    %2$s
    ', + esc_attr( $image_classes ), + $featured_image + ); + } + + $list_items_markup .= sprintf( + '%2$s', + esc_url( $post_link ), + $title + ); + + if ( isset( $attributes['displayAuthor'] ) && $attributes['displayAuthor'] ) { + $author_display_name = get_the_author_meta( 'display_name', $post->post_author ); + + /* translators: byline. %s: author. */ + $byline = sprintf( __( 'by %s' ), $author_display_name ); + + if ( ! empty( $author_display_name ) ) { + $list_items_markup .= sprintf( + '', + $byline + ); + } + } + + if ( isset( $attributes['displayPostDate'] ) && $attributes['displayPostDate'] ) { + $list_items_markup .= sprintf( + '', + esc_attr( get_the_date( 'c', $post ) ), + get_the_date( '', $post ) + ); + } + + if ( isset( $attributes['displayPostContent'] ) && $attributes['displayPostContent'] + && isset( $attributes['displayPostContentRadio'] ) && 'excerpt' === $attributes['displayPostContentRadio'] ) { + + $trimmed_excerpt = get_the_excerpt( $post ); + + /* + * Adds a "Read more" link with screen reader text. + * […] is the default excerpt ending from wp_trim_excerpt() in Core. + */ + if ( str_ends_with( $trimmed_excerpt, ' […]' ) ) { + /** This filter is documented in wp-includes/formatting.php */ + $excerpt_length = (int) apply_filters( 'excerpt_length', $block_core_latest_posts_excerpt_length ); + if ( $excerpt_length <= $block_core_latest_posts_excerpt_length ) { + $trimmed_excerpt = substr( $trimmed_excerpt, 0, -11 ); + $trimmed_excerpt .= sprintf( + /* translators: 1: A URL to a post, 2: Hidden accessibility text: Post title */ + __( '… Read more: %2$s' ), + esc_url( $post_link ), + esc_html( $title ) + ); + } + } + + if ( post_password_required( $post ) ) { + $trimmed_excerpt = __( 'This content is password protected.' ); + } + + $list_items_markup .= sprintf( + '
    %1$s
    ', + $trimmed_excerpt + ); + } + + if ( isset( $attributes['displayPostContent'] ) && $attributes['displayPostContent'] + && isset( $attributes['displayPostContentRadio'] ) && 'full_post' === $attributes['displayPostContentRadio'] ) { + + $post_content = html_entity_decode( $post->post_content, ENT_QUOTES, get_option( 'blog_charset' ) ); + + if ( post_password_required( $post ) ) { + $post_content = __( 'This content is password protected.' ); + } + + $list_items_markup .= sprintf( + '
    %1$s
    ', + wp_kses_post( $post_content ) + ); + } + + $list_items_markup .= "
  • \n"; + } + + remove_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 ); + + $classes = array( 'wp-block-latest-posts__list' ); + if ( isset( $attributes['postLayout'] ) && 'grid' === $attributes['postLayout'] ) { + $classes[] = 'is-grid'; + } + if ( isset( $attributes['columns'] ) && 'grid' === $attributes['postLayout'] ) { + $classes[] = 'columns-' . $attributes['columns']; + } + if ( isset( $attributes['displayPostDate'] ) && $attributes['displayPostDate'] ) { + $classes[] = 'has-dates'; + } + if ( isset( $attributes['displayAuthor'] ) && $attributes['displayAuthor'] ) { + $classes[] = 'has-author'; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '', + $wrapper_attributes, + $list_items_markup + ); +} + +/** + * Registers the `core/latest-posts` block on server. + * + * @since 5.0.0 + */ +function register_block_core_latest_posts() { + register_block_type_from_metadata( + __DIR__ . '/latest-posts', + array( + 'render_callback' => 'render_block_core_latest_posts', + ) + ); +} +add_action( 'init', 'register_block_core_latest_posts' ); + +/** + * Handles outdated versions of the `core/latest-posts` block by converting + * attribute `categories` from a numeric string to an array with key `id`. + * + * This is done to accommodate the changes introduced in #20781 that sought to + * add support for multiple categories to the block. However, given that this + * block is dynamic, the usual provisions for block migration are insufficient, + * as they only act when a block is loaded in the editor. + * + * TODO: Remove when and if the bottom client-side deprecation for this block + * is removed. + * + * @since 5.5.0 + * + * @param array $block A single parsed block object. + * + * @return array The migrated block object. + */ +function block_core_latest_posts_migrate_categories( $block ) { + if ( + 'core/latest-posts' === $block['blockName'] && + ! empty( $block['attrs']['categories'] ) && + is_string( $block['attrs']['categories'] ) + ) { + $block['attrs']['categories'] = array( + array( 'id' => absint( $block['attrs']['categories'] ) ), + ); + } + + return $block; +} +add_filter( 'render_block_data', 'block_core_latest_posts_migrate_categories' ); diff --git a/src/wp-includes/blocks/legacy-widget/index.php b/src/wp-includes/blocks/legacy-widget/index.php new file mode 100644 index 0000000000000..bec1b16b6ba8c --- /dev/null +++ b/src/wp-includes/blocks/legacy-widget/index.php @@ -0,0 +1,157 @@ +get_widget_key( $id_base ); + $widget_object = $wp_widget_factory->get_widget_object( $id_base ); + + if ( ! $widget_key || ! $widget_object ) { + return ''; + } + + if ( isset( $attributes['instance']['encoded'], $attributes['instance']['hash'] ) ) { + $serialized_instance = base64_decode( $attributes['instance']['encoded'] ); + if ( ! hash_equals( wp_hash( $serialized_instance ), (string) $attributes['instance']['hash'] ) ) { + return ''; + } + $instance = unserialize( $serialized_instance ); + } else { + $instance = array(); + } + + $args = array( + 'widget_id' => $widget_object->id, + 'widget_name' => $widget_object->name, + ); + + ob_start(); + the_widget( $widget_key, $instance, $args ); + return ob_get_clean(); +} + +/** + * Registers the 'core/legacy-widget' block. + * + * @since 5.8.0 + */ +function register_block_core_legacy_widget() { + register_block_type_from_metadata( + __DIR__ . '/legacy-widget', + array( + 'render_callback' => 'render_block_core_legacy_widget', + ) + ); +} + +add_action( 'init', 'register_block_core_legacy_widget' ); + +/** + * Intercepts any request with legacy-widget-preview in the query param and, if + * set, renders a page containing a preview of the requested Legacy Widget + * block. + * + * @since 5.8.0 + */ +function handle_legacy_widget_preview_iframe() { + if ( empty( $_GET['legacy-widget-preview'] ) ) { + return; + } + + if ( ! current_user_can( 'edit_theme_options' ) ) { + return; + } + + define( 'IFRAME_REQUEST', true ); + + ?> + + > + + + + + + + + > +
    +
    + get_registered( 'core/legacy-widget' ); + echo $block->render( $_GET['legacy-widget-preview'] ); + ?> +
    +
    + + + + is transformed to
      . + * + * @since 6.6.0 + * + * @see https://github.com/WordPress/gutenberg/issues/12420 + * + * @param array $attributes Attributes of the block being rendered. + * @param string $content Content of the block being rendered. + * + * @return string The content of the block being rendered. + */ +function block_core_list_render( $attributes, $content ) { + if ( ! $content ) { + return $content; + } + + $processor = new WP_HTML_Tag_Processor( $content ); + + $list_tags = array( 'OL', 'UL' ); + while ( $processor->next_tag() ) { + if ( in_array( $processor->get_tag(), $list_tags, true ) ) { + $processor->add_class( 'wp-block-list' ); + break; + } + } + + return $processor->get_updated_html(); +} + +/** + * Registers the `core/list` block on server. + * + * @since 6.6.0 + */ +function register_block_core_list() { + register_block_type_from_metadata( + __DIR__ . '/list', + array( + 'render_callback' => 'block_core_list_render', + ) + ); +} + +add_action( 'init', 'register_block_core_list' ); diff --git a/src/wp-includes/blocks/loginout/index.php b/src/wp-includes/blocks/loginout/index.php new file mode 100644 index 0000000000000..f83d8be424ece --- /dev/null +++ b/src/wp-includes/blocks/loginout/index.php @@ -0,0 +1,61 @@ + false ) ); + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + + return '
      ' . $contents . '
      '; +} + +/** + * Registers the `core/loginout` block on server. + * + * @since 5.8.0 + */ +function register_block_core_loginout() { + register_block_type_from_metadata( + __DIR__ . '/loginout', + array( + 'render_callback' => 'render_block_core_loginout', + ) + ); +} +add_action( 'init', 'register_block_core_loginout' ); diff --git a/src/wp-includes/blocks/media-text/index.php b/src/wp-includes/blocks/media-text/index.php new file mode 100644 index 0000000000000..df4b802736c41 --- /dev/null +++ b/src/wp-includes/blocks/media-text/index.php @@ -0,0 +1,131 @@ + 'div', + 'class_name' => 'wp-block-media-text', + ); + + while ( $block_tag_processor->next_tag( $block_query ) ) { + if ( $image_fill ) { + // The markup below does not work with the deprecated `is-image-fill` class. + $block_tag_processor->remove_class( 'is-image-fill' ); + $block_tag_processor->add_class( 'is-image-fill-element' ); + } + } + + $content = $block_tag_processor->get_updated_html(); + + $media_tag_processor = new WP_HTML_Tag_Processor( $content ); + $wrapping_figure_query = array( + 'tag_name' => 'figure', + 'class_name' => 'wp-block-media-text__media', + ); + + if ( $has_media_on_right ) { + // Loop through all the figure tags and set a bookmark on the last figure tag. + while ( $media_tag_processor->next_tag( $wrapping_figure_query ) ) { + $media_tag_processor->set_bookmark( 'last_figure' ); + } + if ( $media_tag_processor->has_bookmark( 'last_figure' ) ) { + $media_tag_processor->seek( 'last_figure' ); + // Insert a unique ID to identify the figure tag. + $media_tag_processor->set_attribute( 'id', $unique_id ); + } + } else { + if ( $media_tag_processor->next_tag( $wrapping_figure_query ) ) { + // Insert a unique ID to identify the figure tag. + $media_tag_processor->set_attribute( 'id', $unique_id ); + } + } + + $content = $media_tag_processor->get_updated_html(); + + // Add the image tag inside the figure tag, and update the image attributes + // in order to display the featured image. + $media_size_slug = $attributes['mediaSizeSlug'] ?? 'full'; + $image_tag = ''; + $content = preg_replace( + '/()/', + '$1' . $image_tag, + $content + ); + + $image_tag_processor = new WP_HTML_Tag_Processor( $content ); + if ( $image_tag_processor->next_tag( + array( + 'tag_name' => 'figure', + 'id' => $unique_id, + ) + ) ) { + // The ID is only used to ensure that the correct figure tag is selected, + // and can now be removed. + $image_tag_processor->remove_attribute( 'id' ); + if ( $image_tag_processor->next_tag( + array( + 'tag_name' => 'img', + 'class_name' => 'wp-block-media-text__featured_image', + ) + ) ) { + $image_tag_processor->set_attribute( 'src', esc_url( $current_featured_image ) ); + $image_tag_processor->set_attribute( 'class', 'wp-image-' . get_post_thumbnail_id() . ' size-' . $media_size_slug ); + $image_tag_processor->set_attribute( 'alt', trim( strip_tags( get_post_meta( get_post_thumbnail_id(), '_wp_attachment_image_alt', true ) ) ) ); + if ( $image_fill ) { + $image_tag_processor->set_attribute( 'style', 'object-position:' . $focal_point . ';' ); + } + + $content = $image_tag_processor->get_updated_html(); + } + } + + return $content; +} + +/** + * Registers the `core/media-text` block renderer on server. + * + * @since 6.6.0 + */ +function register_block_core_media_text() { + register_block_type_from_metadata( + __DIR__ . '/media-text', + array( + 'render_callback' => 'render_block_core_media_text', + ) + ); +} +add_action( 'init', 'register_block_core_media_text' ); diff --git a/src/wp-includes/blocks/navigation-link/index.php b/src/wp-includes/blocks/navigation-link/index.php new file mode 100644 index 0000000000000..0888d7b5acebd --- /dev/null +++ b/src/wp-includes/blocks/navigation-link/index.php @@ -0,0 +1,488 @@ + array(), + 'inline_styles' => '', + ); + + // Text color. + $named_text_color = null; + $custom_text_color = null; + + if ( $is_sub_menu && array_key_exists( 'customOverlayTextColor', $context ) ) { + $custom_text_color = $context['customOverlayTextColor']; + } elseif ( $is_sub_menu && array_key_exists( 'overlayTextColor', $context ) ) { + $named_text_color = $context['overlayTextColor']; + } elseif ( array_key_exists( 'customTextColor', $context ) ) { + $custom_text_color = $context['customTextColor']; + } elseif ( array_key_exists( 'textColor', $context ) ) { + $named_text_color = $context['textColor']; + } elseif ( isset( $context['style']['color']['text'] ) ) { + $custom_text_color = $context['style']['color']['text']; + } + + // If has text color. + if ( ! is_null( $named_text_color ) ) { + // Add the color class. + array_push( $colors['css_classes'], 'has-text-color', sprintf( 'has-%s-color', $named_text_color ) ); + } elseif ( ! is_null( $custom_text_color ) ) { + // Add the custom color inline style. + $colors['css_classes'][] = 'has-text-color'; + $colors['inline_styles'] .= sprintf( 'color: %s;', $custom_text_color ); + } + + // Background color. + $named_background_color = null; + $custom_background_color = null; + + if ( $is_sub_menu && array_key_exists( 'customOverlayBackgroundColor', $context ) ) { + $custom_background_color = $context['customOverlayBackgroundColor']; + } elseif ( $is_sub_menu && array_key_exists( 'overlayBackgroundColor', $context ) ) { + $named_background_color = $context['overlayBackgroundColor']; + } elseif ( array_key_exists( 'customBackgroundColor', $context ) ) { + $custom_background_color = $context['customBackgroundColor']; + } elseif ( array_key_exists( 'backgroundColor', $context ) ) { + $named_background_color = $context['backgroundColor']; + } elseif ( isset( $context['style']['color']['background'] ) ) { + $custom_background_color = $context['style']['color']['background']; + } + + // If has background color. + if ( ! is_null( $named_background_color ) ) { + // Add the background-color class. + array_push( $colors['css_classes'], 'has-background', sprintf( 'has-%s-background-color', $named_background_color ) ); + } elseif ( ! is_null( $custom_background_color ) ) { + // Add the custom background-color inline style. + $colors['css_classes'][] = 'has-background'; + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $custom_background_color ); + } + + 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. + * + * @since 6.2.0 + * + * @param string $url The url to decode. + * + * @return string $url Returns the decoded url. + */ +function block_core_navigation_link_maybe_urldecode( $url ) { + $is_url_encoded = false; + $query = parse_url( $url, PHP_URL_QUERY ); + $query_params = wp_parse_args( $query ); + + foreach ( $query_params as $query_param ) { + $can_query_param_be_encoded = is_string( $query_param ) && ! empty( $query_param ); + if ( ! $can_query_param_be_encoded ) { + continue; + } + if ( rawurldecode( $query_param ) !== $query_param ) { + $is_url_encoded = true; + break; + } + } + + if ( $is_url_encoded ) { + return rawurldecode( $url ); + } + + return $url; +} + + +/** + * Renders the `core/navigation-link` block. + * + * @since 5.9.0 + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the legacy widget added. + */ +function render_block_core_navigation_link( $attributes, $content, $block ) { + // Check if this navigation item should render based on post status. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + if ( ! gutenberg_block_core_shared_navigation_item_should_render( $attributes, $block ) ) { + return ''; + } + } + + // Don't render the block's subtree if it has no label. + if ( empty( $attributes['label'] ) ) { + return ''; + } + + $font_sizes = block_core_navigation_link_build_css_font_sizes( $block->context ); + $classes = array_merge( + $font_sizes['css_classes'] + ); + $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 ) { + $inner_blocks_html .= $inner_block->render(); + } + $has_submenu = ! empty( trim( $inner_blocks_html ) ); + + $css_classes = trim( implode( ' ', $classes ) ); + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); + + if ( is_post_type_archive() && ! empty( $attributes['url'] ) ) { + $queried_archive_link = get_post_type_archive_link( get_queried_object()->name ); + if ( $attributes['url'] === $queried_archive_link ) { + $is_active = true; + } + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes . ' wp-block-navigation-item' . ( $has_submenu ? ' has-child' : '' ) . + ( $is_active ? ' current-menu-item' : '' ), + 'style' => $style_attribute, + ) + ); + $html = '
    1. ' . + ''; + + if ( isset( $attributes['label'] ) ) { + $html .= wp_kses_post( $attributes['label'] ); + } + + $html .= ''; + + // Add description if available. + if ( ! empty( $attributes['description'] ) ) { + $html .= ''; + $html .= wp_kses_post( $attributes['description'] ); + $html .= ''; + } + + $html .= ''; + // End anchor tag content. + + 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 .= '' . block_core_navigation_render_submenu_icon() . ''; + } + + if ( $has_submenu ) { + $html .= sprintf( + '
        %s
      ', + $inner_blocks_html + ); + } + + $html .= '
    2. '; + + return $html; +} + +/** + * Returns a navigation link variation + * + * @since 5.9.0 + * + * @param WP_Taxonomy|WP_Post_Type $entity post type or taxonomy entity. + * @param string $kind string of value 'taxonomy' or 'post-type'. + * + * @return array + */ +function build_variation_for_navigation_link( $entity, $kind ) { + $title = ''; + $description = ''; + + // Get default labels based on entity type + $default_labels = null; + if ( $entity instanceof WP_Post_Type ) { + $default_labels = WP_Post_Type::get_default_labels(); + } elseif ( $entity instanceof WP_Taxonomy ) { + $default_labels = WP_Taxonomy::get_default_labels(); + } + + // Get title and check if it's default + $is_default_title = false; + if ( property_exists( $entity->labels, 'item_link' ) ) { + $title = $entity->labels->item_link; + if ( isset( $default_labels['item_link'] ) ) { + $is_default_title = in_array( $title, $default_labels['item_link'], true ); + } + } + + // Get description and check if it's default + $is_default_description = false; + if ( property_exists( $entity->labels, 'item_link_description' ) ) { + $description = $entity->labels->item_link_description; + if ( isset( $default_labels['item_link_description'] ) ) { + $is_default_description = in_array( $description, $default_labels['item_link_description'], true ); + } + } + + // Calculate singular name once (used for both title and description) + $singular = $entity->labels->singular_name ?? ucfirst( $entity->name ); + + // Set default title if needed + if ( $is_default_title || '' === $title ) { + /* translators: %s: Singular label of the entity. */ + $title = sprintf( __( '%s link' ), $singular ); + } + + // Default description if needed. + // Use a single space character instead of an empty string to prevent fallback to the + // block.json default description ("Add a page, link, or another item to your navigation."). + // An empty string would be treated as missing and trigger the fallback, while a single + // space appears blank in the UI but prevents the fallback behavior. + // We avoid generating descriptions like "A link to a %s" to prevent grammatical errors + // (e.g., "A link to a event" should be "A link to an event"). + if ( $is_default_description || '' === $description ) { + $description = ' '; + } + + $variation = array( + 'name' => $entity->name, + 'title' => $title, + 'description' => $description, + 'attributes' => array( + 'type' => $entity->name, + 'kind' => $kind, + ), + ); + + // Tweak some value for the variations. + $variation_overrides = array( + 'post_tag' => array( + 'name' => 'tag', + 'attributes' => array( + 'type' => 'tag', + 'kind' => $kind, + ), + ), + 'post_format' => array( + // The item_link and item_link_description for post formats is the + // same as for tags, so need to be overridden. + 'title' => __( 'Post Format Link' ), + 'description' => __( 'A link to a post format' ), + 'attributes' => array( + 'type' => 'post_format', + 'kind' => $kind, + ), + ), + ); + + if ( array_key_exists( $entity->name, $variation_overrides ) ) { + $variation = array_merge( + $variation, + $variation_overrides[ $entity->name ] + ); + } + + return $variation; +} + +/** + * Filters the registered variations for a block type. + * Returns the dynamically built variations for all post-types and taxonomies. + * + * @since 6.5.0 + * + * @param array $variations Array of registered variations for a block type. + * @param WP_Block_Type $block_type The full block type object. + * @return array Numerically indexed array of block variations. + */ +function block_core_navigation_link_filter_variations( $variations, $block_type ) { + if ( 'core/navigation-link' !== $block_type->name ) { + return $variations; + } + + $generated_variations = block_core_navigation_link_build_variations(); + + /* + * IMPORTANT: Order matters for deduplication. + * + * The variations returned from this filter are bootstrapped to JavaScript and + * processed by the block variations reducer. The reducer uses `getUniqueItemsByName()` + * (packages/blocks/src/store/reducer.js:51-57) which keeps the FIRST variation with + * a given 'name' and discards later duplicates when processing the array in order. + * + * By placing generated variations first in `array_merge()`, the improved + * labels (e.g., "Product link" instead of generic "Post Link") are processed first + * and preserved. The generic incoming variations are then discarded as duplicates. + * + * Why `array_merge()` instead of manual deduplication? + * - Both arrays use numeric indices (0, 1, 2...), so `array_merge()` concatenates + * and re-indexes them sequentially, preserving order + * - The reducer handles deduplication, so it is not needed here + * - This keeps the PHP code simple and relies on the established JavaScript behavior + * + * See: https://github.com/WordPress/gutenberg/pull/72517 + */ + return array_merge( $generated_variations, $variations ); +} + +/** + * Returns an array of variations for the navigation link block. + * + * @since 6.5.0 + * + * @return array + */ +function block_core_navigation_link_build_variations() { + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' ); + $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'objects' ); + + /* + * Use two separate arrays as a way to order the variations in the UI. + * Known variations (like Post Link and Page Link) are added to the + * `built_ins` array. Variations for custom post types and taxonomies are + * added to the `variations` array and will always appear after `built-ins. + */ + $built_ins = array(); + $variations = array(); + + if ( $post_types ) { + foreach ( $post_types as $post_type ) { + $variation = build_variation_for_navigation_link( $post_type, 'post-type' ); + if ( $post_type->_builtin ) { + $built_ins[] = $variation; + } else { + $variations[] = $variation; + } + } + } + if ( $taxonomies ) { + foreach ( $taxonomies as $taxonomy ) { + $variation = build_variation_for_navigation_link( $taxonomy, 'taxonomy' ); + if ( $taxonomy->_builtin ) { + $built_ins[] = $variation; + } else { + $variations[] = $variation; + } + } + } + + $all_variations = array_merge( $built_ins, $variations ); + + return $all_variations; +} + +/** + * Registers the navigation link block. + * + * @since 5.9.0 + * + * @uses render_block_core_navigation_link() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_navigation_link() { + register_block_type_from_metadata( + __DIR__ . '/navigation-link', + array( + 'render_callback' => 'render_block_core_navigation_link', + ) + ); +} +add_action( 'init', '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 ); diff --git a/src/wp-includes/blocks/navigation-submenu/index.php b/src/wp-includes/blocks/navigation-submenu/index.php new file mode 100644 index 0000000000000..beb2b389d3a03 --- /dev/null +++ b/src/wp-includes/blocks/navigation-submenu/index.php @@ -0,0 +1,329 @@ + 'click' + // openSubmenusOnClick: false -> 'hover' + // openSubmenusOnClick: null -> 'hover' (default) + return ! empty( $open_submenus_on_click ) ? 'click' : '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. + * + * @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. + * + * @since 5.9.0 + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the legacy widget added. + */ +function render_block_core_navigation_submenu( $attributes, $content, $block ) { + // Check if this navigation item should render based on post status. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + if ( ! gutenberg_block_core_shared_navigation_item_should_render( $attributes, $block ) ) { + return ''; + } + } + + // Don't render the block's subtree if it has no label. + if ( empty( $attributes['label'] ) ) { + return ''; + } + + $font_sizes = block_core_navigation_submenu_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 ) { + $inner_blocks_html .= $inner_block->render(); + } + $has_submenu = ! empty( trim( $inner_blocks_html ) ); + + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); + + if ( is_post_type_archive() && ! empty( $attributes['url'] ) ) { + $queried_archive_link = get_post_type_archive_link( get_queried_object()->name ); + if ( $attributes['url'] === $queried_archive_link ) { + $is_active = true; + } + } + + $show_submenu_indicators = isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon']; + $computed_visibility = block_core_navigation_submenu_get_submenu_visibility( $block->context ); + $open_on_click = 'click' === $computed_visibility; + $open_on_hover = 'hover' === $computed_visibility; + $open_on_hover_and_click = $open_on_hover && $show_submenu_indicators; + + $classes = array( + 'wp-block-navigation-item', + ); + $classes = array_merge( + $classes, + $font_sizes['css_classes'] + ); + if ( $has_submenu ) { + $classes[] = 'has-child'; + } + if ( $open_on_click ) { + $classes[] = 'open-on-click'; + } + if ( $open_on_hover_and_click ) { + $classes[] = 'open-on-hover-click'; + } + if ( 'always' === $computed_visibility ) { + $classes[] = 'open-always'; + } + if ( $is_active ) { + $classes[] = 'current-menu-item'; + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => implode( ' ', $classes ), + 'style' => $style_attribute, + ) + ); + + $label = ''; + + if ( isset( $attributes['label'] ) ) { + $label .= wp_kses_post( $attributes['label'] ); + } + + $aria_label = sprintf( + /* translators: Accessibility text. %s: Parent page title. */ + __( '%s submenu' ), + wp_strip_all_tags( $label ) + ); + + $html = '
    3. '; + + // If Submenus open on hover or are always open, we render an anchor tag with attributes. + // If submenu icons are set to show, we also render a submenu button, so the submenu can be opened on click. + if ( ! $open_on_click ) { + $item_url = $attributes['url'] ?? ''; + // Start appending HTML attributes to anchor tag. + $html .= '
    4. ' . wp_kses_post( $title ) . ''; + } + + if ( isset( $page['children'] ) ) { + if ( $is_navigation_child && $show_submenu_icons && ! $open_submenus_on_click ) { + $markup .= ''; + } + $markup .= '
        '; + $markup .= block_core_page_list_render_nested_page_list( $open_submenus_on_click, $show_submenu_icons, $is_navigation_child, $page['children'], $is_nested, $active_page_ancestor_ids, $colors, $depth + 1 ); + $markup .= '
      '; + } + $markup .= '
    5. '; + } + return $markup; +} + +/** + * Outputs nested array of pages + * + * @since 5.8.0 + * + * @param array $current_level The level being iterated through. + * @param array $children The children grouped by parent post ID. + * + * @return array The nested array of pages. + */ +function block_core_page_list_nest_pages( $current_level, $children ) { + if ( empty( $current_level ) ) { + return; + } + foreach ( (array) $current_level as $key => $current ) { + if ( isset( $children[ $key ] ) ) { + $current_level[ $key ]['children'] = block_core_page_list_nest_pages( $children[ $key ], $children ); + } + } + return $current_level; +} + +/** + * Renders the `core/page-list` block on server. + * + * @since 5.8.0 + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the page list markup. + */ +function render_block_core_page_list( $attributes, $content, $block ) { + static $block_id = 0; + ++$block_id; + + $parent_page_id = $attributes['parentPageID']; + $is_nested = $attributes['isNested']; + + $all_pages = get_pages( + array( + 'sort_column' => 'menu_order,post_title', + 'order' => 'asc', + ) + ); + + // If there are no pages, there is nothing to show. + if ( empty( $all_pages ) ) { + return; + } + + $top_level_pages = array(); + + $pages_with_children = array(); + + $active_page_ancestor_ids = array(); + + foreach ( (array) $all_pages as $page ) { + $is_active = ! empty( $page->ID ) && ( get_queried_object_id() === $page->ID ); + + if ( $is_active ) { + $active_page_ancestor_ids = get_post_ancestors( $page->ID ); + } + + if ( $page->post_parent ) { + $pages_with_children[ $page->post_parent ][ $page->ID ] = array( + 'page_id' => $page->ID, + 'title' => $page->post_title, + 'link' => get_permalink( $page ), + 'is_active' => $is_active, + ); + } else { + $top_level_pages[ $page->ID ] = array( + 'page_id' => $page->ID, + 'title' => $page->post_title, + 'link' => get_permalink( $page ), + 'is_active' => $is_active, + ); + + } + } + + $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['css_classes'], + $font_sizes['css_classes'] + ); + $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $css_classes = trim( implode( ' ', $classes ) ); + + $nested_pages = block_core_page_list_nest_pages( $top_level_pages, $pages_with_children ); + + if ( 0 !== $parent_page_id ) { + // If the parent page has no child pages, there is nothing to show. + if ( ! array_key_exists( $parent_page_id, $pages_with_children ) ) { + return; + } + + $nested_pages = block_core_page_list_nest_pages( + $pages_with_children[ $parent_page_id ], + $pages_with_children + ); + } + + $is_navigation_child = array_key_exists( 'showSubmenuIcon', $block->context ); + + $open_submenus_on_click = array_key_exists( 'openSubmenusOnClick', $block->context ) ? $block->context['openSubmenusOnClick'] : false; + + $show_submenu_icons = array_key_exists( 'showSubmenuIcon', $block->context ) ? $block->context['showSubmenuIcon'] : false; + + $wrapper_markup = $is_nested ? '%2$s' : '
        %2$s
      '; + + $items_markup = block_core_page_list_render_nested_page_list( $open_submenus_on_click, $show_submenu_icons, $is_navigation_child, $nested_pages, $is_nested, $active_page_ancestor_ids, $colors ); + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes, + 'style' => $style_attribute, + ) + ); + + return sprintf( + $wrapper_markup, + $wrapper_attributes, + $items_markup + ); +} + +/** + * Registers the `core/pages` block on server. + * + * @since 5.8.0 + */ +function register_block_core_page_list() { + register_block_type_from_metadata( + __DIR__ . '/page-list', + array( + 'render_callback' => 'render_block_core_page_list', + ) + ); +} +add_action( 'init', 'register_block_core_page_list' ); diff --git a/src/wp-includes/blocks/paragraph/index.php b/src/wp-includes/blocks/paragraph/index.php new file mode 100644 index 0000000000000..f72ca085a2048 --- /dev/null +++ b/src/wp-includes/blocks/paragraph/index.php @@ -0,0 +1,48 @@ +Hello World

      + * + * Would be transformed to: + *

      Hello World

      + * + * @since 7.0.0 + * + * @param string $block_content The block content. + * + * @return string Filtered block content. + */ +function block_core_paragraph_add_class( $block_content ) { + if ( ! $block_content ) { + return $block_content; + } + + $processor = new WP_HTML_Tag_Processor( $block_content ); + + if ( $processor->next_tag( 'p' ) ) { + $processor->add_class( 'wp-block-paragraph' ); + } + + return $processor->get_updated_html(); +} + +add_filter( 'render_block_core/paragraph', 'block_core_paragraph_add_class' ); + +/** + * Registers the `core/paragraph` block on server. + * + * @since 7.0.0 + */ +function register_block_core_paragraph() { + register_block_type_from_metadata( __DIR__ . '/paragraph' ); +} +add_action( 'init', 'register_block_core_paragraph' ); diff --git a/src/wp-includes/blocks/pattern/index.php b/src/wp-includes/blocks/pattern/index.php new file mode 100644 index 0000000000000..870313eb5e86d --- /dev/null +++ b/src/wp-includes/blocks/pattern/index.php @@ -0,0 +1,72 @@ + 'render_block_core_pattern', + ) + ); +} + +/** + * Renders the `core/pattern` block on the server. + * + * @since 6.3.0 Backwards compatibility: blocks with no `syncStatus` attribute do not receive block wrapper. + * + * @global WP_Embed $wp_embed Used to process embedded content within patterns + * + * @param array $attributes Block attributes. + * + * @return string Returns the output of the pattern. + */ +function render_block_core_pattern( $attributes ) { + static $seen_refs = array(); + + if ( empty( $attributes['slug'] ) ) { + return ''; + } + + $slug = $attributes['slug']; + $registry = WP_Block_Patterns_Registry::get_instance(); + + if ( ! $registry->is_registered( $slug ) ) { + return ''; + } + + if ( isset( $seen_refs[ $attributes['slug'] ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. %s represents a pattern's slug. + sprintf( __( '[block rendering halted for pattern "%s"]' ), $slug ) : + ''; + } + + $pattern = $registry->get_registered( $slug ); + $content = $pattern['content']; + + $seen_refs[ $attributes['slug'] ] = true; + + $content = do_blocks( $content ); + + global $wp_embed; + $content = $wp_embed->autoembed( $content ); + + unset( $seen_refs[ $attributes['slug'] ] ); + return $content; +} + +add_action( 'init', 'register_block_core_pattern' ); diff --git a/src/wp-includes/blocks/post-author-biography/index.php b/src/wp-includes/blocks/post-author-biography/index.php new file mode 100644 index 0000000000000..bd983f79e7609 --- /dev/null +++ b/src/wp-includes/blocks/post-author-biography/index.php @@ -0,0 +1,53 @@ +context['postId'] ) ) { + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + } else { + $author_id = get_query_var( 'author' ); + } + + if ( empty( $author_id ) ) { + return ''; + } + + $author_biography = get_the_author_meta( 'description', $author_id ); + if ( empty( $author_biography ) ) { + return ''; + } + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + + return sprintf( '
      ', $wrapper_attributes ) . $author_biography . '
      '; +} + +/** + * Registers the `core/post-author-biography` block on the server. + * + * @since 6.0.0 + */ +function register_block_core_post_author_biography() { + register_block_type_from_metadata( + __DIR__ . '/post-author-biography', + array( + 'render_callback' => 'render_block_core_post_author_biography', + ) + ); +} +add_action( 'init', 'register_block_core_post_author_biography' ); diff --git a/src/wp-includes/blocks/post-author-name/index.php b/src/wp-includes/blocks/post-author-name/index.php new file mode 100644 index 0000000000000..ac514401f5cc2 --- /dev/null +++ b/src/wp-includes/blocks/post-author-name/index.php @@ -0,0 +1,63 @@ +context['postId'] ) ) { + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + } else { + $author_id = get_query_var( 'author' ); + } + + if ( empty( $author_id ) ) { + return ''; + } + + if ( isset( $block->context['postType'] ) && ! post_type_supports( $block->context['postType'], 'author' ) ) { + return ''; + } + + $author_name = get_the_author_meta( 'display_name', $author_id ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $author_name = sprintf( '', get_author_posts_url( $author_id ), esc_attr( $attributes['linkTarget'] ), $author_name ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( '
      %2$s
      ', $wrapper_attributes, $author_name ); +} + +/** + * Registers the `core/post-author-name` block on the server. + * + * @since 6.2.0 + */ +function register_block_core_post_author_name() { + register_block_type_from_metadata( + __DIR__ . '/post-author-name', + array( + 'render_callback' => 'render_block_core_post_author_name', + ) + ); +} +add_action( 'init', 'register_block_core_post_author_name' ); diff --git a/src/wp-includes/blocks/post-author/index.php b/src/wp-includes/blocks/post-author/index.php new file mode 100644 index 0000000000000..a4880f8a9e744 --- /dev/null +++ b/src/wp-includes/blocks/post-author/index.php @@ -0,0 +1,81 @@ +context['postId'] ) ) { + $author_id = get_query_var( 'author' ); + } else { + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + } + + if ( empty( $author_id ) ) { + return ''; + } + + if ( isset( $block->context['postType'] ) && ! post_type_supports( $block->context['postType'], 'author' ) ) { + return ''; + } + + $avatar = ! empty( $attributes['avatarSize'] ) ? get_avatar( + $author_id, + $attributes['avatarSize'] + ) : null; + + $link = get_author_posts_url( $author_id ); + $author_name = get_the_author_meta( 'display_name', $author_id ); + if ( ! empty( $attributes['isLink'] && ! empty( $attributes['linkTarget'] ) ) ) { + $author_name = sprintf( '%3$s', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $author_name ); + } + + $byline = ! empty( $attributes['byline'] ) ? $attributes['byline'] : false; + $classes = array(); + if ( isset( $attributes['itemsJustification'] ) ) { + $classes[] = 'items-justified-' . $attributes['itemsJustification']; + } + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( '
      ', $wrapper_attributes ) . + ( ! empty( $attributes['showAvatar'] ) ? '' : '' ) . + '' . + '
      '; +} + +/** + * Registers the `core/post-author` block on the server. + * + * @since 5.9.0 + */ +function register_block_core_post_author() { + register_block_type_from_metadata( + __DIR__ . '/post-author', + array( + 'render_callback' => 'render_block_core_post_author', + ) + ); +} +add_action( 'init', 'register_block_core_post_author' ); diff --git a/src/wp-includes/blocks/post-comments-count/index.php b/src/wp-includes/blocks/post-comments-count/index.php new file mode 100644 index 0000000000000..bf12d6f0f9c4c --- /dev/null +++ b/src/wp-includes/blocks/post-comments-count/index.php @@ -0,0 +1,49 @@ +context['postId'] ) ) { + return ''; + } + + $classes = ''; + if ( isset( $attributes['textAlign'] ) ) { + $classes .= 'has-text-align-' . $attributes['textAlign']; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + get_comments_number( $block->context['postId'] ) + ); +} + +/** + * Registers the `core/post-comments-count` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_post_comments_count() { + register_block_type_from_metadata( + __DIR__ . '/post-comments-count', + array( + 'render_callback' => 'render_block_core_post_comments_count', + ) + ); +} +add_action( 'init', 'register_block_core_post_comments_count' ); diff --git a/src/wp-includes/blocks/post-comments-form/index.php b/src/wp-includes/blocks/post-comments-form/index.php new file mode 100644 index 0000000000000..dfbf4c59f264a --- /dev/null +++ b/src/wp-includes/blocks/post-comments-form/index.php @@ -0,0 +1,88 @@ +context['postId'] ) ) { + return ''; + } + + if ( post_password_required( $block->context['postId'] ) ) { + return; + } + + $classes = array( 'comment-respond' ); // See comment further below. + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + add_filter( 'comment_form_defaults', 'post_comments_form_block_form_defaults' ); + + ob_start(); + comment_form( array(), $block->context['postId'] ); + $form = ob_get_clean(); + + remove_filter( 'comment_form_defaults', 'post_comments_form_block_form_defaults' ); + + // We use the outermost wrapping `
      ` returned by `comment_form()` + // which is identified by its default classname `comment-respond` to inject + // our wrapper attributes. This way, it is guaranteed that all styling applied + // to the block is carried along when the comment form is moved to the location + // of the 'Reply' link that the user clicked by Core's `comment-reply.js` script. + $form = str_replace( 'class="comment-respond"', $wrapper_attributes, $form ); + + // Enqueue the comment-reply script. + wp_enqueue_script( 'comment-reply' ); + + return $form; +} + +/** + * Registers the `core/post-comments-form` block on the server. + * + * @since 6.0.0 + */ +function register_block_core_post_comments_form() { + register_block_type_from_metadata( + __DIR__ . '/post-comments-form', + array( + 'render_callback' => 'render_block_core_post_comments_form', + ) + ); +} +add_action( 'init', 'register_block_core_post_comments_form' ); + +/** + * Use the button block classes for the form-submit button. + * + * @since 6.0.0 + * + * @param array $fields The default comment form arguments. + * + * @return array Returns the modified fields. + */ +function post_comments_form_block_form_defaults( $fields ) { + if ( wp_is_block_theme() ) { + $fields['submit_button'] = ''; + $fields['submit_field'] = '

      %1$s %2$s

      '; + } + + return $fields; +} diff --git a/src/wp-includes/blocks/post-comments-link/index.php b/src/wp-includes/blocks/post-comments-link/index.php new file mode 100644 index 0000000000000..c6d33eb0cd65c --- /dev/null +++ b/src/wp-includes/blocks/post-comments-link/index.php @@ -0,0 +1,75 @@ +context['postId'] ) || + isset( $block->context['postId'] ) && + ! comments_open( $block->context['postId'] ) + ) { + return ''; + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + $comments_number = (int) get_comments_number( $block->context['postId'] ); + $comments_link = get_comments_link( $block->context['postId'] ); + $post_title = get_the_title( $block->context['postId'] ); + $comment_html = ''; + + if ( 0 === $comments_number ) { + $comment_html = sprintf( + /* translators: %s post title */ + __( 'No comments on %s' ), + $post_title + ); + } else { + $comment_html = sprintf( + /* translators: 1: Number of comments, 2: post title */ + _n( + '%1$s comment on %2$s', + '%1$s comments on %2$s', + $comments_number + ), + esc_html( number_format_i18n( $comments_number ) ), + $post_title + ); + } + + return ''; +} + +/** + * Registers the `core/post-comments-link` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_post_comments_link() { + register_block_type_from_metadata( + __DIR__ . '/post-comments-link', + array( + 'render_callback' => 'render_block_core_post_comments_link', + ) + ); +} +add_action( 'init', 'register_block_core_post_comments_link' ); diff --git a/src/wp-includes/blocks/post-content/index.php b/src/wp-includes/blocks/post-content/index.php new file mode 100644 index 0000000000000..0be1a8730f605 --- /dev/null +++ b/src/wp-includes/blocks/post-content/index.php @@ -0,0 +1,86 @@ +context['postId'] ) ) { + return ''; + } + + $post_id = $block->context['postId']; + + if ( isset( $seen_ids[ $post_id ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + $seen_ids[ $post_id ] = true; + + // When inside the main loop, we want to use queried object + // so that `the_preview` for the current post can apply. + // We force this behavior by omitting the third argument (post ID) from the `get_the_content`. + $content = get_the_content(); + // Check for nextpage to display page links for paginated posts. + if ( has_block( 'core/nextpage' ) ) { + $content .= wp_link_pages( array( 'echo' => 0 ) ); + } + + /** This filter is documented in wp-includes/post-template.php */ + $content = apply_filters( 'the_content', str_replace( ']]>', ']]>', $content ) ); + unset( $seen_ids[ $post_id ] ); + + if ( empty( $content ) ) { + return ''; + } + + $tag_name = 'div'; + + if ( ! empty( $attributes['tagName'] ) && tag_escape( $attributes['tagName'] ) === $attributes['tagName'] ) { + $tag_name = $attributes['tagName']; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => 'entry-content' ) ); + + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/post-content` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_content() { + register_block_type_from_metadata( + __DIR__ . '/post-content', + array( + 'render_callback' => 'render_block_core_post_content', + ) + ); +} +add_action( 'init', 'register_block_core_post_content' ); diff --git a/src/wp-includes/blocks/post-date/index.php b/src/wp-includes/blocks/post-date/index.php new file mode 100644 index 0000000000000..a8073dd846217 --- /dev/null +++ b/src/wp-includes/blocks/post-date/index.php @@ -0,0 +1,106 @@ + 'modified', + ); + } else { + $source_args = array( + 'field' => 'date', + ); + } + $attributes['datetime'] = $source->get_value( $source_args, $block, 'datetime' ); + } + + if ( isset( $source_args['field'] ) && 'modified' === $source_args['field'] ) { + $classes[] = 'wp-block-post-date__modified-date'; + } + + if ( empty( $attributes['datetime'] ) ) { + // If the `datetime` attribute is set but empty, it could be because Block Bindings + // set it that way. This can happen e.g. if the block is bound to the + // post's last modified date, and the latter lies before the publish date. + // (See https://github.com/WordPress/gutenberg/pull/46839 where this logic was originally + // implemented.) + // In this case, we have to respect and return the empty value. + return ''; + } + + $unformatted_date = $attributes['datetime']; + $post_timestamp = strtotime( $unformatted_date ); + + if ( isset( $attributes['format'] ) && 'human-diff' === $attributes['format'] ) { + if ( $post_timestamp > time() ) { + // translators: %s: human-readable time difference. + $formatted_date = sprintf( __( '%s from now' ), human_time_diff( $post_timestamp ) ); + } else { + // translators: %s: human-readable time difference. + $formatted_date = sprintf( __( '%s ago' ), human_time_diff( $post_timestamp ) ); + } + } else { + $format = empty( $attributes['format'] ) ? get_option( 'date_format' ) : $attributes['format']; + $formatted_date = wp_date( $format, $post_timestamp ); + } + + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + $time_tag = sprintf( '', $unformatted_date, $formatted_date ); + + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $block->context['postId'] ) ) { + $time_tag = sprintf( '%2s', get_the_permalink( $block->context['postId'] ), $time_tag ); + } + + return sprintf( '
      %2$s
      ', $wrapper_attributes, $time_tag ); +} + +/** + * Registers the `core/post-date` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_date() { + register_block_type_from_metadata( + __DIR__ . '/post-date', + array( + 'render_callback' => 'render_block_core_post_date', + ) + ); +} +add_action( 'init', 'register_block_core_post_date' ); diff --git a/src/wp-includes/blocks/post-excerpt/index.php b/src/wp-includes/blocks/post-excerpt/index.php new file mode 100644 index 0000000000000..abfa6a1ea5c6f --- /dev/null +++ b/src/wp-includes/blocks/post-excerpt/index.php @@ -0,0 +1,126 @@ +context['postId'] ) ) { + return ''; + } + + $more_text = ! empty( $attributes['moreText'] ) ? '' . wp_kses_post( $attributes['moreText'] ) . '' : ''; + $filter_excerpt_more = static function ( $more ) use ( $more_text ) { + return empty( $more_text ) ? $more : ''; + }; + /** + * Some themes might use `excerpt_more` filter to handle the + * `more` link displayed after a trimmed excerpt. Since the + * block has a `more text` attribute we have to check and + * override if needed the return value from this filter. + * So if the block's attribute is not empty override the + * `excerpt_more` filter and return nothing. This will + * result in showing only one `read more` link at a time. + * + * This hook needs to be applied before the excerpt is retrieved with get_the_excerpt. + * Otherwise, the read more link filter from the theme is not removed. + */ + add_filter( 'excerpt_more', $filter_excerpt_more ); + + /* + * The purpose of the excerpt length setting is to limit the length of both + * automatically generated and user-created excerpts. + * Because the excerpt_length filter only applies to auto generated excerpts, + * wp_trim_words is used instead. + * + * To ensure the block's excerptLength setting works correctly for auto-generated + * excerpts, we temporarily override excerpt_length to 101 (the max block setting) + * so that wp_trim_excerpt doesn't pre-trim the content before wp_trim_words can + * apply the user's desired length. + */ + $excerpt_length = $attributes['excerptLength']; + add_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX ); + + $excerpt = get_the_excerpt( $block->context['postId'] ); + + remove_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX ); + + if ( isset( $excerpt_length ) ) { + $excerpt = wp_trim_words( $excerpt, $excerpt_length ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + $content = '

      ' . $excerpt; + $show_more_on_new_line = ! isset( $attributes['showMoreOnNewLine'] ) || $attributes['showMoreOnNewLine']; + if ( $show_more_on_new_line && ! empty( $more_text ) ) { + $content .= '

      ' . $more_text . '

      '; + } else { + $content .= " $more_text

      "; + } + remove_filter( 'excerpt_more', $filter_excerpt_more ); + return sprintf( '
      %2$s
      ', $wrapper_attributes, $content ); +} + +/** + * Registers the `core/post-excerpt` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_excerpt() { + register_block_type_from_metadata( + __DIR__ . '/post-excerpt', + array( + 'render_callback' => 'render_block_core_post_excerpt', + ) + ); +} +add_action( 'init', 'register_block_core_post_excerpt' ); + +/** + * Callback for the excerpt_length filter to override the excerpt length. + * + * If themes or plugins filter the excerpt_length, we need to + * override the filter in the editor, otherwise + * the excerpt length block setting has no effect. + * Returns 101 (one more than the max block setting of 100) to ensure + * wp_trim_words can detect when trimming is needed and add the ellipsis. + * + * For REST API requests, the filter is added on 'rest_api_init' + * because REST_REQUEST is not defined until 'parse_request'. + * + * @since 7.0.0 + * + * @return int The excerpt length. + */ +function block_core_post_excerpt_excerpt_length() { + return 101; +} + +if ( is_admin() ) { + add_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX ); +} +add_action( + 'rest_api_init', + static function () { + add_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX ); + } +); diff --git a/src/wp-includes/blocks/post-featured-image/index.php b/src/wp-includes/blocks/post-featured-image/index.php new file mode 100644 index 0000000000000..e9fc60f7038f5 --- /dev/null +++ b/src/wp-includes/blocks/post-featured-image/index.php @@ -0,0 +1,269 @@ +context['postId'] ) ) { + return ''; + } + $post_ID = $block->context['postId']; + + $is_link = isset( $attributes['isLink'] ) && $attributes['isLink']; + $size_slug = $attributes['sizeSlug'] ?? 'post-thumbnail'; + $attr = get_block_core_post_featured_image_border_attributes( $attributes ); + $overlay_markup = get_block_core_post_featured_image_overlay_element_markup( $attributes ); + + if ( $is_link ) { + $title = get_the_title( $post_ID ); + if ( $title ) { + $attr['alt'] = trim( strip_tags( $title ) ); + } else { + $attr['alt'] = sprintf( + // translators: %d is the post ID. + __( 'Untitled post %d' ), + $post_ID + ); + } + } + + $extra_styles = ''; + + // Aspect ratio with a height set needs to override the default width/height. + if ( ! empty( $attributes['aspectRatio'] ) ) { + $extra_styles .= 'width:100%;height:100%;'; + } elseif ( ! empty( $attributes['height'] ) ) { + $extra_styles .= "height:{$attributes['height']};"; + } + + if ( ! empty( $attributes['scale'] ) ) { + $extra_styles .= "object-fit:{$attributes['scale']};"; + } + if ( ! empty( $attributes['style']['shadow'] ) ) { + $shadow_styles = wp_style_engine_get_styles( array( 'shadow' => $attributes['style']['shadow'] ) ); + + if ( ! empty( $shadow_styles['css'] ) ) { + $extra_styles .= $shadow_styles['css']; + } + } + + if ( ! empty( $extra_styles ) ) { + $attr['style'] = empty( $attr['style'] ) ? $extra_styles : $attr['style'] . $extra_styles; + } + + $featured_image = get_the_post_thumbnail( $post_ID, $size_slug, $attr ); + + // Get the first image from the post. + if ( $attributes['useFirstImageFromPost'] && ! $featured_image ) { + $content_post = get_post( $post_ID ); + $content = $content_post->post_content; + $processor = new WP_HTML_Tag_Processor( $content ); + + /* + * Transfer the image tag from the post into a new text snippet. + * Because the HTML API doesn't currently expose a way to extract + * HTML substrings this is necessary as a workaround. Of note, this + * is different than directly extracting the IMG tag: + * - If there are duplicate attributes in the source there will only be one in the output. + * - If there are single-quoted or unquoted attributes they will be double-quoted in the output. + * - If there are named character references in the attribute values they may be replaced with their direct code points. E.g. `…` becomes `…`. + * In the future there will likely be a mechanism to copy snippets of HTML from + * one document into another, via the HTML Processor's `get_outer_html()` or + * equivalent. When that happens it would be appropriate to replace this custom + * code with that canonical code. + */ + if ( $processor->next_tag( 'img' ) ) { + $tag_html = new WP_HTML_Tag_Processor( '' ); + $tag_html->next_tag(); + foreach ( $processor->get_attribute_names_with_prefix( '' ) as $name ) { + $tag_html->set_attribute( $name, $processor->get_attribute( $name ) ); + } + $featured_image = $tag_html->get_updated_html(); + } + } + + if ( ! $featured_image ) { + return ''; + } + + if ( $is_link ) { + $link_target = $attributes['linkTarget']; + $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; + $height = ! empty( $attributes['height'] ) ? 'style="' . esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . '"' : ''; + $featured_image = sprintf( + '%5$s%6$s', + get_the_permalink( $post_ID ), + esc_attr( $link_target ), + $rel, + $height, + $featured_image, + $overlay_markup + ); + } else { + $featured_image = $featured_image . $overlay_markup; + } + + $aspect_ratio = ! empty( $attributes['aspectRatio'] ) + ? esc_attr( safecss_filter_attr( 'aspect-ratio:' . $attributes['aspectRatio'] ) ) . ';' + : ''; + $width = ! empty( $attributes['width'] ) + ? esc_attr( safecss_filter_attr( 'width:' . $attributes['width'] ) ) . ';' + : ''; + $height = ! empty( $attributes['height'] ) + ? esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . ';' + : ''; + if ( ! $height && ! $width && ! $aspect_ratio ) { + $wrapper_attributes = get_block_wrapper_attributes(); + } else { + $wrapper_attributes = get_block_wrapper_attributes( array( 'style' => $aspect_ratio . $width . $height ) ); + } + return "
      {$featured_image}
      "; +} + +/** + * Generate markup for the HTML element that will be used for the overlay. + * + * @since 6.1.0 + * + * @param array $attributes Block attributes. + * + * @return string HTML markup in string format. + */ +function get_block_core_post_featured_image_overlay_element_markup( $attributes ) { + $has_dim_background = isset( $attributes['dimRatio'] ) && $attributes['dimRatio']; + $has_gradient = isset( $attributes['gradient'] ) && $attributes['gradient']; + $has_custom_gradient = isset( $attributes['customGradient'] ) && $attributes['customGradient']; + $has_solid_overlay = isset( $attributes['overlayColor'] ) && $attributes['overlayColor']; + $has_custom_overlay = isset( $attributes['customOverlayColor'] ) && $attributes['customOverlayColor']; + $class_names = array( 'wp-block-post-featured-image__overlay' ); + $styles = array(); + + if ( ! $has_dim_background ) { + return ''; + } + + // Apply border classes and styles. + $border_attributes = get_block_core_post_featured_image_border_attributes( $attributes ); + + if ( ! empty( $border_attributes['class'] ) ) { + $class_names[] = $border_attributes['class']; + } + + if ( ! empty( $border_attributes['style'] ) ) { + $styles[] = $border_attributes['style']; + } + + // Apply overlay and gradient classes. + if ( $has_dim_background ) { + $class_names[] = 'has-background-dim'; + $class_names[] = "has-background-dim-{$attributes['dimRatio']}"; + } + + if ( $has_solid_overlay ) { + $class_names[] = "has-{$attributes['overlayColor']}-background-color"; + } + + if ( $has_gradient || $has_custom_gradient ) { + $class_names[] = 'has-background-gradient'; + } + + if ( $has_gradient ) { + $class_names[] = "has-{$attributes['gradient']}-gradient-background"; + } + + // Apply background styles. + if ( $has_custom_gradient ) { + $styles[] = sprintf( 'background-image: %s;', $attributes['customGradient'] ); + } + + if ( $has_custom_overlay ) { + $styles[] = sprintf( 'background-color: %s;', $attributes['customOverlayColor'] ); + } + + return sprintf( + '', + esc_attr( implode( ' ', $class_names ) ), + esc_attr( safecss_filter_attr( implode( ' ', $styles ) ) ) + ); +} + +/** + * Generates class names and styles to apply the border support styles for + * the Post Featured Image block. + * + * @since 6.1.0 + * + * @param array $attributes The block attributes. + * @return array The border-related classnames and styles for the block. + */ +function get_block_core_post_featured_image_border_attributes( $attributes ) { + $border_styles = array(); + $sides = array( 'top', 'right', 'bottom', 'left' ); + + // Border radius. + if ( isset( $attributes['style']['border']['radius'] ) ) { + $border_styles['radius'] = $attributes['style']['border']['radius']; + } + + // Border style. + if ( isset( $attributes['style']['border']['style'] ) ) { + $border_styles['style'] = $attributes['style']['border']['style']; + } + + // Border width. + if ( isset( $attributes['style']['border']['width'] ) ) { + $border_styles['width'] = $attributes['style']['border']['width']; + } + + // Border color. + $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null; + $custom_color = $attributes['style']['border']['color'] ?? null; + $border_styles['color'] = $preset_color ? $preset_color : $custom_color; + + // Individual border styles e.g. top, left etc. + foreach ( $sides as $side ) { + $border = $attributes['style']['border'][ $side ] ?? null; + $border_styles[ $side ] = array( + 'color' => $border['color'] ?? null, + 'style' => $border['style'] ?? null, + 'width' => $border['width'] ?? null, + ); + } + + $styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) ); + $attributes = array(); + if ( ! empty( $styles['classnames'] ) ) { + $attributes['class'] = $styles['classnames']; + } + if ( ! empty( $styles['css'] ) ) { + $attributes['style'] = $styles['css']; + } + return $attributes; +} + +/** + * Registers the `core/post-featured-image` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_featured_image() { + register_block_type_from_metadata( + __DIR__ . '/post-featured-image', + array( + 'render_callback' => 'render_block_core_post_featured_image', + ) + ); +} +add_action( 'init', 'register_block_core_post_featured_image' ); diff --git a/src/wp-includes/blocks/post-navigation-link/index.php b/src/wp-includes/blocks/post-navigation-link/index.php new file mode 100644 index 0000000000000..cde3910e74353 --- /dev/null +++ b/src/wp-includes/blocks/post-navigation-link/index.php @@ -0,0 +1,139 @@ + $classes, + ) + ); + // Set default values. + $format = '%link'; + $link = 'next' === $navigation_type ? _x( 'Next', 'label for next post link' ) : _x( 'Previous', 'label for previous post link' ); + $label = ''; + + // Only use hardcoded values here, otherwise we need to add escaping where these values are used. + $arrow_map = array( + 'none' => '', + 'arrow' => array( + 'next' => '→', + 'previous' => '←', + ), + 'chevron' => array( + 'next' => '»', + 'previous' => '«', + ), + ); + + // If a custom label is provided, make this a link. + // `$label` is used to prepend the provided label, if we want to show the page title as well. + if ( isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ) { + $label = "{$attributes['label']}"; + $link = $label; + } + + // If we want to also show the page title, make the page title a link and prepend the label. + if ( isset( $attributes['showTitle'] ) && $attributes['showTitle'] ) { + /* + * If the label link option is not enabled but there is a custom label, + * display the custom label as text before the linked title. + */ + if ( ! $attributes['linkLabel'] ) { + if ( $label ) { + $format = '' . wp_kses_post( $label ) . ' %link'; + } + $link = '%title'; + } elseif ( isset( $attributes['linkLabel'] ) && $attributes['linkLabel'] ) { + // If the label link option is enabled and there is a custom label, display it before the title. + if ( $label ) { + $link = '' . wp_kses_post( $label ) . ' %title'; + } else { + /* + * If the label link option is enabled and there is no custom label, + * add a colon between the label and the post title. + */ + $label = 'next' === $navigation_type ? _x( 'Next:', 'label before the title of the next post' ) : _x( 'Previous:', 'label before the title of the previous post' ); + $link = sprintf( + '%1$s %2$s', + wp_kses_post( $label ), + '%title' + ); + } + } + } + + // Display arrows. + if ( isset( $attributes['arrow'] ) && 'none' !== $attributes['arrow'] && isset( $arrow_map[ $attributes['arrow'] ] ) ) { + $arrow = $arrow_map[ $attributes['arrow'] ][ $navigation_type ]; + + if ( 'next' === $navigation_type ) { + $format = '%link'; + } else { + $format = '%link'; + } + } + + /* + * The dynamic portion of the function name, `$navigation_type`, + * Refers to the type of adjacency, 'next' or 'previous'. + * + * @see https://developer.wordpress.org/reference/functions/get_previous_post_link/ + * @see https://developer.wordpress.org/reference/functions/get_next_post_link/ + */ + $get_link_function = "get_{$navigation_type}_post_link"; + + if ( ! empty( $attributes['taxonomy'] ) ) { + $content = $get_link_function( $format, $link, true, '', $attributes['taxonomy'] ); + } else { + $content = $get_link_function( $format, $link ); + } + + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/post-navigation-link` block on the server. + * + * @since 5.9.0 + */ +function register_block_core_post_navigation_link() { + register_block_type_from_metadata( + __DIR__ . '/post-navigation-link', + array( + 'render_callback' => 'render_block_core_post_navigation_link', + ) + ); +} +add_action( 'init', 'register_block_core_post_navigation_link' ); diff --git a/src/wp-includes/blocks/post-template/index.php b/src/wp-includes/blocks/post-template/index.php new file mode 100644 index 0000000000000..9126355c096a5 --- /dev/null +++ b/src/wp-includes/blocks/post-template/index.php @@ -0,0 +1,162 @@ +name ) { + return true; + } + if ( + 'core/cover' === $block->name && + ! empty( $block->attributes['useFeaturedImage'] ) + ) { + return true; + } + if ( $block->inner_blocks && block_core_post_template_uses_featured_image( $block->inner_blocks ) ) { + return true; + } + } + + return false; +} + +/** + * Renders the `core/post-template` block on the server. + * + * @since 6.3.0 Changed render_block_context priority to `1`. + * + * @global WP_Query $wp_query WordPress Query object. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the output of the query, structured using the layout defined by the block's inner blocks. + */ +function render_block_core_post_template( $attributes, $content, $block ) { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + + // Use global query if needed. + $use_global_query = ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ); + if ( $use_global_query ) { + global $wp_query; + + /* + * If already in the main query loop, duplicate the query instance to not tamper with the main instance. + * Since this is a nested query, it should start at the beginning, therefore rewind posts. + * Otherwise, the main query loop has not started yet and this block is responsible for doing so. + */ + if ( in_the_loop() ) { + $query = clone $wp_query; + $query->rewind_posts(); + } else { + $query = $wp_query; + } + } else { + $query_args = build_query_vars_from_query_block( $block, $page ); + $query = new WP_Query( $query_args ); + } + + if ( ! $query->have_posts() ) { + return ''; + } + + if ( block_core_post_template_uses_featured_image( $block->inner_blocks ) ) { + update_post_thumbnail_cache( $query ); + } + + $classnames = ''; + if ( isset( $block->context['displayLayout'] ) && isset( $block->context['query'] ) ) { + if ( isset( $block->context['displayLayout']['type'] ) && 'flex' === $block->context['displayLayout']['type'] ) { + $classnames = "is-flex-container columns-{$block->context['displayLayout']['columns']}"; + } + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classnames .= ' has-link-color'; + } + + // Ensure backwards compatibility by flagging the number of columns via classname when using grid layout. + if ( isset( $attributes['layout']['type'] ) && 'grid' === $attributes['layout']['type'] && ! empty( $attributes['layout']['columnCount'] ) ) { + $classnames .= ' ' . sanitize_title( 'columns-' . $attributes['layout']['columnCount'] ); + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classnames ) ) ); + + $content = ''; + while ( $query->have_posts() ) { + $query->the_post(); + + // Get an instance of the current Post Template block. + $block_instance = $block->parsed_block; + + // Set the block name to one that does not correspond to an existing registered block. + // This ensures that for the inner instances of the Post Template block, we do not render any block supports. + $block_instance['blockName'] = 'core/null'; + + $post_id = get_the_ID(); + $post_type = get_post_type(); + $filter_block_context = static function ( $context ) use ( $post_id, $post_type ) { + $context['postType'] = $post_type; + $context['postId'] = $post_id; + return $context; + }; + + // Use an early priority to so that other 'render_block_context' filters have access to the values. + add_filter( 'render_block_context', $filter_block_context, 1 ); + // Render the inner blocks of the Post Template block with `dynamic` set to `false` to prevent calling + // `render_callback` and ensure that no wrapper markup is included. + $block_content = ( new WP_Block( $block_instance ) )->render( array( 'dynamic' => false ) ); + remove_filter( 'render_block_context', $filter_block_context, 1 ); + + // Wrap the render inner blocks in a `li` element with the appropriate post classes. + $post_classes = implode( ' ', get_post_class( 'wp-block-post' ) ); + + $inner_block_directives = $enhanced_pagination ? ' data-wp-key="post-template-item-' . $post_id . '"' : ''; + + $content .= '' . $block_content . ''; + } + + /* + * Use this function to restore the context of the template tags + * from a secondary query loop back to the main query loop. + * Since we use two custom loops, it's safest to always restore. + */ + wp_reset_postdata(); + + return sprintf( + '
        %2$s
      ', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/post-template` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_template() { + register_block_type_from_metadata( + __DIR__ . '/post-template', + array( + 'render_callback' => 'render_block_core_post_template', + 'skip_inner_blocks' => true, + ) + ); +} +add_action( 'init', 'register_block_core_post_template' ); diff --git a/src/wp-includes/blocks/post-terms/index.php b/src/wp-includes/blocks/post-terms/index.php new file mode 100644 index 0000000000000..3e7a05f10117e --- /dev/null +++ b/src/wp-includes/blocks/post-terms/index.php @@ -0,0 +1,130 @@ +context['postId'] ) || ! isset( $attributes['term'] ) ) { + return ''; + } + + if ( ! is_taxonomy_viewable( $attributes['term'] ) ) { + return ''; + } + + $classes = array( 'taxonomy-' . $attributes['term'] ); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $separator = empty( $attributes['separator'] ) ? ' ' : $attributes['separator']; + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + $prefix = "
      "; + if ( isset( $attributes['prefix'] ) && $attributes['prefix'] ) { + $prefix .= '' . $attributes['prefix'] . ''; + } + + $suffix = '
      '; + if ( isset( $attributes['suffix'] ) && $attributes['suffix'] ) { + $suffix = '' . $attributes['suffix'] . '' . $suffix; + } + + $post_terms = get_the_term_list( + $block->context['postId'], + $attributes['term'], + wp_kses_post( $prefix ), + '' . esc_html( $separator ) . '', + wp_kses_post( $suffix ) + ); + + if ( is_wp_error( $post_terms ) || empty( $post_terms ) ) { + return ''; + } + + return $post_terms; +} + +/** + * Returns the available variations for the `core/post-terms` block. + * + * @since 6.5.0 + * + * @return array The available variations for the block. + */ +function block_core_post_terms_build_variations() { + $taxonomies = get_taxonomies( + array( + 'publicly_queryable' => true, + 'show_in_rest' => true, + ), + 'objects' + ); + + // Split the available taxonomies to `built_in` and custom ones, + // in order to prioritize the `built_in` taxonomies at the + // search results. + $built_ins = array(); + $custom_variations = array(); + + // Create and register the eligible taxonomies variations. + foreach ( $taxonomies as $taxonomy ) { + $variation = array( + 'name' => $taxonomy->name, + 'title' => $taxonomy->label, + 'description' => sprintf( + /* translators: %s: taxonomy's label */ + __( 'Display a list of assigned terms from the taxonomy: %s' ), + $taxonomy->label + ), + 'attributes' => array( + 'term' => $taxonomy->name, + ), + 'isActive' => array( 'term' ), + 'scope' => array( 'inserter', 'transform' ), + ); + // Set the category variation as the default one. + if ( 'category' === $taxonomy->name ) { + $variation['isDefault'] = true; + } + if ( $taxonomy->_builtin ) { + $built_ins[] = $variation; + } else { + $custom_variations[] = $variation; + } + } + + return array_merge( $built_ins, $custom_variations ); +} + +/** + * Registers the `core/post-terms` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_terms() { + register_block_type_from_metadata( + __DIR__ . '/post-terms', + array( + 'render_callback' => 'render_block_core_post_terms', + 'variation_callback' => 'block_core_post_terms_build_variations', + ) + ); +} +add_action( 'init', 'register_block_core_post_terms' ); diff --git a/src/wp-includes/blocks/post-time-to-read/index.php b/src/wp-includes/blocks/post-time-to-read/index.php new file mode 100644 index 0000000000000..74a091d97c335 --- /dev/null +++ b/src/wp-includes/blocks/post-time-to-read/index.php @@ -0,0 +1,185 @@ + '/<\/?[a-z][^>]*?>/i', + 'html_comment_regexp' => '//', + 'space_regexp' => '/ | /i', + 'html_entity_regexp' => '/&\S+?;/', + 'connector_regexp' => "/--|\x{2014}/u", + 'remove_regexp' => "/[\x{0021}-\x{0040}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{0080}-\x{00BF}\x{00D7}\x{00F7}\x{2000}-\x{2BFF}\x{2E00}-\x{2E7F}]/u", + 'astral_regexp' => "/[\x{010000}-\x{10FFFF}]/u", + 'words_regexp' => '/\S\s+/u', + 'characters_excluding_spaces_regexp' => '/\S/u', + 'characters_including_spaces_regexp' => "/[^\f\n\r\t\v\x{00AD}\x{2028}\x{2029}]/u", + ); + + $count = 0; + + if ( '' === trim( $text ) ) { + return $count; + } + + // Sanitize type to one of three possibilities: 'words', 'characters_excluding_spaces' or 'characters_including_spaces'. + if ( 'characters_excluding_spaces' !== $type && 'characters_including_spaces' !== $type ) { + $type = 'words'; + } + + $text .= "\n"; + + // Replace all HTML with a new-line. + $text = preg_replace( $settings['html_regexp'], "\n", $text ); + + // Remove all HTML comments. + $text = preg_replace( $settings['html_comment_regexp'], '', $text ); + + // If a shortcode regular expression has been provided use it to remove shortcodes. + if ( ! empty( $settings['shortcodes_regexp'] ) ) { + $text = preg_replace( $settings['shortcodes_regexp'], "\n", $text ); + } + + // Normalize non-breaking space to a normal space. + $text = preg_replace( $settings['space_regexp'], ' ', $text ); + + if ( 'words' === $type ) { + // Remove HTML Entities. + $text = preg_replace( $settings['html_entity_regexp'], '', $text ); + + // Convert connectors to spaces to count attached text as words. + $text = preg_replace( $settings['connector_regexp'], ' ', $text ); + + // Remove unwanted characters. + $text = preg_replace( $settings['remove_regexp'], '', $text ); + } else { + // Convert HTML Entities to "a". + $text = preg_replace( $settings['html_entity_regexp'], 'a', $text ); + + // Remove surrogate points. + $text = preg_replace( $settings['astral_regexp'], 'a', $text ); + } + + // Match with the selected type regular expression to count the items. + return (int) preg_match_all( $settings[ $type . '_regexp' ], $text ); +} + +/** + * Renders the `core/post-time-to-read` block on the server. + * + * @since 6.9.0 + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the rendered post author name block. + */ +function render_block_core_post_time_to_read( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $content = get_the_content(); + $average_reading_rate = $attributes['averageReadingSpeed'] ?? 189; + + $display_mode = $attributes['displayMode'] ?? 'time'; + + $word_count_type = wp_get_word_count_type(); + $total_words = block_core_post_time_to_read_word_count( $content, $word_count_type ); + + $parts = array(); + + // Add "time to read" part, if enabled. + if ( 'time' === $display_mode ) { + if ( ! empty( $attributes['displayAsRange'] ) ) { + // Calculate faster reading rate with 20% speed = lower minutes, + // and slower reading rate with 20% speed = higher minutes. + $min_minutes = max( 1, (int) round( $total_words / $average_reading_rate * 0.8 ) ); + $max_minutes = max( 1, (int) round( $total_words / $average_reading_rate * 1.2 ) ); + if ( $min_minutes === $max_minutes ) { + $max_minutes = $min_minutes + 1; + } + /* translators: 1: minimum minutes, 2: maximum minutes to read the post. */ + $time_string = sprintf( + /* translators: 1: minimum minutes, 2: maximum minutes to read the post. */ + _x( '%1$s–%2$s minutes', 'Range of minutes to read' ), + $min_minutes, + $max_minutes + ); + } else { + $minutes_to_read = max( 1, (int) round( $total_words / $average_reading_rate ) ); + $time_string = sprintf( + /* translators: %s: the number of minutes to read the post. */ + _n( '%s minute', '%s minutes', $minutes_to_read ), + $minutes_to_read + ); + } + $parts[] = $time_string; + } + + // Add "word count" part, if enabled. + if ( 'words' === $display_mode ) { + $word_count_string = 'words' === $word_count_type ? sprintf( + /* translators: %s: the number of words in the post. */ + _n( '%s word', '%s words', $total_words ), + number_format_i18n( $total_words ) + ) : sprintf( + /* translators: %s: the number of characters in the post. */ + _n( '%s character', '%s characters', $total_words ), + number_format_i18n( $total_words ) + ); + $parts[] = $word_count_string; + } + + $display_string = implode( '
      ', $parts ); + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $display_string + ); +} + + +/** + * Registers the `core/post-time-to-read` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_post_time_to_read() { + register_block_type_from_metadata( + __DIR__ . '/post-time-to-read', + array( + 'render_callback' => 'render_block_core_post_time_to_read', + ) + ); +} + +add_action( 'init', 'register_block_core_post_time_to_read' ); diff --git a/src/wp-includes/blocks/post-title/index.php b/src/wp-includes/blocks/post-title/index.php new file mode 100644 index 0000000000000..ed27f2e4158eb --- /dev/null +++ b/src/wp-includes/blocks/post-title/index.php @@ -0,0 +1,74 @@ +context['postId'] ) ) { + return ''; + } + + /** + * The `$post` argument is intentionally omitted so that changes are reflected when previewing a post. + * See: https://github.com/WordPress/gutenberg/pull/37622#issuecomment-1000932816. + */ + $title = get_the_title(); + + if ( ! $title ) { + return ''; + } + + $tag_name = 'h2'; + if ( isset( $attributes['level'] ) ) { + $tag_name = 0 === $attributes['level'] ? 'p' : 'h' . (int) $attributes['level']; + } + + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; + $title = sprintf( '%4$s', esc_url( get_the_permalink( $block->context['postId'] ) ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + $title + ); +} + +/** + * Registers the `core/post-title` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_post_title() { + register_block_type_from_metadata( + __DIR__ . '/post-title', + array( + 'render_callback' => 'render_block_core_post_title', + ) + ); +} +add_action( 'init', 'register_block_core_post_title' ); diff --git a/src/wp-includes/blocks/query-no-results/index.php b/src/wp-includes/blocks/query-no-results/index.php new file mode 100644 index 0000000000000..34d6b321cbd6b --- /dev/null +++ b/src/wp-includes/blocks/query-no-results/index.php @@ -0,0 +1,65 @@ +context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + + // Override the custom query with the global query if needed. + $use_global_query = ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ); + if ( $use_global_query ) { + global $wp_query; + $query = $wp_query; + } else { + $query_args = build_query_vars_from_query_block( $block, $page ); + $query = new WP_Query( $query_args ); + } + + if ( $query->post_count > 0 ) { + return ''; + } + + $classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : ''; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-no-results` block on the server. + * + * @since 6.0.0 + */ +function register_block_core_query_no_results() { + register_block_type_from_metadata( + __DIR__ . '/query-no-results', + array( + 'render_callback' => 'render_block_core_query_no_results', + ) + ); +} +add_action( 'init', 'register_block_core_query_no_results' ); diff --git a/src/wp-includes/blocks/query-pagination-next/index.php b/src/wp-includes/blocks/query-pagination-next/index.php new file mode 100644 index 0000000000000..d574f94093846 --- /dev/null +++ b/src/wp-includes/blocks/query-pagination-next/index.php @@ -0,0 +1,102 @@ +context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; + + $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; + $default_label = __( 'Next Page' ); + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; + $pagination_arrow = get_query_pagination_arrow( $block, true ); + + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } + if ( $pagination_arrow ) { + $label .= $pagination_arrow; + } + $content = ''; + + // Check if the pagination is for Query that inherits the global context. + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + $filter_link_attributes = static function () use ( $wrapper_attributes ) { + return $wrapper_attributes; + }; + add_filter( 'next_posts_link_attributes', $filter_link_attributes ); + // Take into account if we have set a bigger `max page` + // than what the query has. + global $wp_query; + if ( $max_page > $wp_query->max_num_pages ) { + $max_page = $wp_query->max_num_pages; + } + $content = get_next_posts_link( $label, $max_page ); + remove_filter( 'next_posts_link_attributes', $filter_link_attributes ); + } elseif ( ! $max_page || $max_page > $page ) { + $custom_query = new WP_Query( build_query_vars_from_query_block( $block, $page ) ); + $custom_query_max_pages = (int) $custom_query->max_num_pages; + if ( $custom_query_max_pages && $custom_query_max_pages !== $page ) { + $content = sprintf( + '%3$s', + esc_url( add_query_arg( $page_key, $page + 1 ) ), + $wrapper_attributes, + $label + ); + } + wp_reset_postdata(); // Restore original Post Data. + } + + if ( $enhanced_pagination && isset( $content ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag( + array( + 'tag_name' => 'a', + 'class_name' => 'wp-block-query-pagination-next', + ) + ) ) { + $p->set_attribute( 'data-wp-key', 'query-pagination-next' ); + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'core/query::actions.prefetch' ); + $p->set_attribute( 'data-wp-watch', 'core/query::callbacks.prefetch' ); + $content = $p->get_updated_html(); + } + } + + return $content; +} + +/** + * Registers the `core/query-pagination-next` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query_pagination_next() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-next', + array( + 'render_callback' => 'render_block_core_query_pagination_next', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_next' ); diff --git a/src/wp-includes/blocks/query-pagination-numbers/index.php b/src/wp-includes/blocks/query-pagination-numbers/index.php new file mode 100644 index 0000000000000..fddf28660fe4f --- /dev/null +++ b/src/wp-includes/blocks/query-pagination-numbers/index.php @@ -0,0 +1,133 @@ +context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; + + $wrapper_attributes = get_block_wrapper_attributes(); + $content = ''; + global $wp_query; + $mid_size = isset( $block->attributes['midSize'] ) ? (int) $block->attributes['midSize'] : null; + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + // Take into account if we have set a bigger `max page` + // than what the query has. + $total = ! $max_page || $max_page > $wp_query->max_num_pages ? $wp_query->max_num_pages : $max_page; + $paginate_args = array( + 'prev_next' => false, + 'total' => $total, + ); + if ( null !== $mid_size ) { + $paginate_args['mid_size'] = $mid_size; + } + $content = paginate_links( $paginate_args ); + } else { + $block_query = new WP_Query( build_query_vars_from_query_block( $block, $page ) ); + // `paginate_links` works with the global $wp_query, so we have to + // temporarily switch it with our custom query. + $prev_wp_query = $wp_query; + $wp_query = $block_query; + $total = ! $max_page || $max_page > $wp_query->max_num_pages ? $wp_query->max_num_pages : $max_page; + $paginate_args = array( + 'base' => '%_%', + 'format' => "?$page_key=%#%", + 'current' => max( 1, $page ), + 'total' => $total, + 'prev_next' => false, + ); + if ( null !== $mid_size ) { + $paginate_args['mid_size'] = $mid_size; + } + if ( 1 !== $page ) { + /** + * `paginate_links` doesn't use the provided `format` when the page is `1`. + * This is great for the main query as it removes the extra query params + * making the URL shorter, but in the case of multiple custom queries is + * problematic. It results in returning an empty link which ends up with + * a link to the current page. + * + * A way to address this is to add a `fake` query arg with no value that + * is the same for all custom queries. This way the link is not empty and + * preserves all the other existent query args. + * + * @see https://developer.wordpress.org/reference/functions/paginate_links/ + * + * The proper fix of this should be in core. Track Ticket: + * @see https://core.trac.wordpress.org/ticket/53868 + * + * TODO: After two WP versions (starting from the WP version the core patch landed), + * we should remove this and call `paginate_links` with the proper new arg. + */ + $paginate_args['add_args'] = array( 'cst' => '' ); + } + // We still need to preserve `paged` query param if exists, as is used + // for Queries that inherit from global context. + $paged = empty( $_GET['paged'] ) ? null : (int) $_GET['paged']; + if ( $paged ) { + $paginate_args['add_args'] = array( 'paged' => $paged ); + } + $content = paginate_links( $paginate_args ); + wp_reset_postdata(); // Restore original Post Data. + $wp_query = $prev_wp_query; + } + + if ( empty( $content ) ) { + return ''; + } + + if ( $enhanced_pagination ) { + $p = new WP_HTML_Tag_Processor( $content ); + $tag_index = 0; + while ( $p->next_tag( + array( 'class_name' => 'page-numbers' ) + ) ) { + if ( null === $p->get_attribute( 'data-wp-key' ) ) { + $p->set_attribute( 'data-wp-key', 'index-' . $tag_index++ ); + } + if ( 'A' === $p->get_tag() ) { + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); + } + } + $content = $p->get_updated_html(); + } + + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-pagination-numbers` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query_pagination_numbers() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-numbers', + array( + 'render_callback' => 'render_block_core_query_pagination_numbers', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_numbers' ); diff --git a/src/wp-includes/blocks/query-pagination-previous/index.php b/src/wp-includes/blocks/query-pagination-previous/index.php new file mode 100644 index 0000000000000..ec3de8921d519 --- /dev/null +++ b/src/wp-includes/blocks/query-pagination-previous/index.php @@ -0,0 +1,95 @@ +context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; + $default_label = __( 'Previous Page' ); + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; + $pagination_arrow = get_query_pagination_arrow( $block, false ); + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } + if ( $pagination_arrow ) { + $label = $pagination_arrow . $label; + } + $content = ''; + // Check if the pagination is for Query that inherits the global context + // and handle appropriately. + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + $filter_link_attributes = static function () use ( $wrapper_attributes ) { + return $wrapper_attributes; + }; + + add_filter( 'previous_posts_link_attributes', $filter_link_attributes ); + $content = get_previous_posts_link( $label ); + remove_filter( 'previous_posts_link_attributes', $filter_link_attributes ); + } else { + $block_query = new WP_Query( build_query_vars_from_query_block( $block, $page ) ); + $block_max_pages = $block_query->max_num_pages; + $total = ! $max_page || $max_page > $block_max_pages ? $block_max_pages : $max_page; + wp_reset_postdata(); + + if ( 1 < $page && $page <= $total ) { + $content = sprintf( + '%3$s', + esc_url( add_query_arg( $page_key, $page - 1 ) ), + $wrapper_attributes, + $label + ); + } + } + + if ( $enhanced_pagination && isset( $content ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag( + array( + 'tag_name' => 'a', + 'class_name' => 'wp-block-query-pagination-previous', + ) + ) ) { + $p->set_attribute( 'data-wp-key', 'query-pagination-previous' ); + $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'core/query::actions.prefetch' ); + $p->set_attribute( 'data-wp-watch', 'core/query::callbacks.prefetch' ); + $content = $p->get_updated_html(); + } + } + + return $content; +} + +/** + * Registers the `core/query-pagination-previous` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query_pagination_previous() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-previous', + array( + 'render_callback' => 'render_block_core_query_pagination_previous', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_previous' ); diff --git a/src/wp-includes/blocks/query-pagination/index.php b/src/wp-includes/blocks/query-pagination/index.php new file mode 100644 index 0000000000000..acafe968c0bec --- /dev/null +++ b/src/wp-includes/blocks/query-pagination/index.php @@ -0,0 +1,51 @@ + __( 'Pagination' ), + 'class' => $classes, + ) + ); + + return sprintf( + '', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-pagination` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query_pagination() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination', + array( + 'render_callback' => 'render_block_core_query_pagination', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination' ); diff --git a/src/wp-includes/blocks/query-title/index.php b/src/wp-includes/blocks/query-title/index.php new file mode 100644 index 0000000000000..3c3a4ee26233c --- /dev/null +++ b/src/wp-includes/blocks/query-title/index.php @@ -0,0 +1,103 @@ +context['query']['postType'] ?? get_post_type(); + + if ( ! $type || + ( 'archive' === $type && ! $is_archive ) || + ( 'search' === $type && ! $is_search ) || + ( 'post-type' === $type && ! $post_type ) + ) { + return ''; + } + $title = ''; + if ( $is_archive ) { + $show_prefix = $attributes['showPrefix'] ?? true; + if ( ! $show_prefix ) { + add_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); + $title = get_the_archive_title(); + remove_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); + } else { + $title = get_the_archive_title(); + } + } + if ( $is_search ) { + $title = __( 'Search results' ); + + if ( isset( $attributes['showSearchTerm'] ) && $attributes['showSearchTerm'] ) { + $title = sprintf( + /* translators: %s is the search term. */ + __( 'Search results for: “%s”' ), + get_search_query() + ); + } + } + if ( 'post-type' === $type ) { + $post_type_object = get_post_type_object( $post_type ); + + if ( ! $post_type_object ) { + return ''; + } + + $post_type_name = $post_type_object->labels->singular_name; + $show_prefix = $attributes['showPrefix'] ?? true; + + if ( $show_prefix ) { + $title = sprintf( + /* translators: %s is the post type name. */ + __( 'Post Type: “%s”' ), + $post_type_name + ); + } else { + $title = $post_type_name; + } + } + + $level = isset( $attributes['level'] ) ? (int) $attributes['level'] : 1; + $tag_name = 0 === $level ? 'p' : 'h' . (int) $attributes['level']; + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + $title + ); +} + +/** + * Registers the `core/query-title` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query_title() { + register_block_type_from_metadata( + __DIR__ . '/query-title', + array( + 'render_callback' => 'render_block_core_query_title', + ) + ); +} +add_action( 'init', 'register_block_core_query_title' ); diff --git a/src/wp-includes/blocks/query-total/index.php b/src/wp-includes/blocks/query-total/index.php new file mode 100644 index 0000000000000..f63bb1b98eac0 --- /dev/null +++ b/src/wp-includes/blocks/query-total/index.php @@ -0,0 +1,90 @@ +context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + $query_to_use = $wp_query; + $current_page = max( 1, (int) get_query_var( 'paged', 1 ) ); + } else { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $current_page = isset( $_GET[ $page_key ] ) ? (int) $_GET[ $page_key ] : 1; + $query_to_use = new WP_Query( build_query_vars_from_query_block( $block, $current_page ) ); + } + + $max_rows = $query_to_use->found_posts; + $posts_per_page = (int) $query_to_use->get( 'posts_per_page' ); + + // Calculate the range of posts being displayed. + $start = ( 0 === $max_rows ) ? 0 : ( ( $current_page - 1 ) * $posts_per_page + 1 ); + $end = min( $start + $posts_per_page - 1, $max_rows ); + + // Prepare the display based on the `displayType` attribute. + $output = ''; + switch ( $attributes['displayType'] ) { + case 'range-display': + if ( $start === $end ) { + $output = sprintf( + /* translators: 1: Start index of posts, 2: Total number of posts */ + __( 'Displaying %1$s of %2$s' ), + $start, + $max_rows + ); + } else { + $output = sprintf( + /* translators: 1: Start index of posts, 2: End index of posts, 3: Total number of posts */ + __( 'Displaying %1$s – %2$s of %3$s' ), + $start, + $end, + $max_rows + ); + } + + break; + + case 'total-results': + default: + // translators: %d: number of results. + $output = sprintf( _n( '%d result found', '%d results found', $max_rows ), $max_rows ); + break; + } + + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $output + ); +} + +/** + * Registers the `query-total` block. + * + * @since 6.8.0 + */ +function register_block_core_query_total() { + register_block_type_from_metadata( + __DIR__ . '/query-total', + array( + 'render_callback' => 'render_block_core_query_total', + ) + ); +} +add_action( 'init', 'register_block_core_query_total' ); diff --git a/src/wp-includes/blocks/query/index.php b/src/wp-includes/blocks/query/index.php new file mode 100644 index 0000000000000..6b544cd99ae8c --- /dev/null +++ b/src/wp-includes/blocks/query/index.php @@ -0,0 +1,152 @@ +next_tag() ) { + // Add the necessary directives. + $p->set_attribute( 'data-wp-interactive', 'core/query' ); + $p->set_attribute( 'data-wp-router-region', 'query-' . $attributes['queryId'] ); + $p->set_attribute( 'data-wp-context', '{}' ); + $p->set_attribute( 'data-wp-key', $attributes['queryId'] ); + $content = $p->get_updated_html(); + } + } + + // Add the styles to the block type if the block is interactive and remove + // them if it's not. + $style_asset = 'wp-block-query'; + if ( ! wp_style_is( $style_asset ) ) { + $style_handles = $block->block_type->style_handles; + // If the styles are not needed, and they are still in the `style_handles`, remove them. + if ( ! $is_interactive && in_array( $style_asset, $style_handles, true ) ) { + $block->block_type->style_handles = array_diff( $style_handles, array( $style_asset ) ); + } + // If the styles are needed, but they were previously removed, add them again. + if ( $is_interactive && ! in_array( $style_asset, $style_handles, true ) ) { + $block->block_type->style_handles = array_merge( $style_handles, array( $style_asset ) ); + } + } + + return $content; +} + +/** + * Registers the `core/query` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_query() { + register_block_type_from_metadata( + __DIR__ . '/query', + array( + 'render_callback' => 'render_block_core_query', + ) + ); +} +add_action( 'init', 'register_block_core_query' ); + +/** + * Traverse the tree of blocks looking for any plugin block (i.e., a block from + * an installed plugin) inside a Query block with the enhanced pagination + * enabled. If at least one is found, the enhanced pagination is effectively + * disabled to prevent any potential incompatibilities. + * + * @since 6.4.0 + * + * @param array $parsed_block The block being rendered. + * @return array Returns the parsed block, unmodified. + */ +function block_core_query_disable_enhanced_pagination( $parsed_block ) { + static $enhanced_query_stack = array(); + static $dirty_enhanced_queries = array(); + static $render_query_callback = null; + + $block_name = $parsed_block['blockName']; + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + $has_enhanced_pagination = isset( $parsed_block['attrs']['enhancedPagination'] ) && true === $parsed_block['attrs']['enhancedPagination'] && isset( $parsed_block['attrs']['queryId'] ); + /* + * Client side navigation can be true in two states: + * - supports.interactivity = true; + * - supports.interactivity.clientNavigation = true; + */ + $supports_client_navigation = ( isset( $block_type->supports['interactivity']['clientNavigation'] ) && true === $block_type->supports['interactivity']['clientNavigation'] ) + || ( isset( $block_type->supports['interactivity'] ) && true === $block_type->supports['interactivity'] ); + + if ( 'core/query' === $block_name && $has_enhanced_pagination ) { + $enhanced_query_stack[] = $parsed_block['attrs']['queryId']; + + if ( ! isset( $render_query_callback ) ) { + /** + * Filter that disables the enhanced pagination feature during block + * rendering when a plugin block has been found inside. It does so + * by adding an attribute called `data-wp-navigation-disabled` which + * is later handled by the front-end logic. + * + * @param string $content The block content. + * @param array $block The full block, including name and attributes. + * @return string Returns the modified output of the query block. + */ + $render_query_callback = static function ( $content, $block ) use ( &$enhanced_query_stack, &$dirty_enhanced_queries, &$render_query_callback ) { + $has_enhanced_pagination = isset( $block['attrs']['enhancedPagination'] ) && true === $block['attrs']['enhancedPagination'] && isset( $block['attrs']['queryId'] ); + + if ( ! $has_enhanced_pagination ) { + return $content; + } + + if ( isset( $dirty_enhanced_queries[ $block['attrs']['queryId'] ] ) ) { + // Disable navigation in the router store config. + wp_interactivity_config( 'core/router', array( 'clientNavigationDisabled' => true ) ); + $dirty_enhanced_queries[ $block['attrs']['queryId'] ] = null; + } + + array_pop( $enhanced_query_stack ); + + if ( empty( $enhanced_query_stack ) ) { + remove_filter( 'render_block_core/query', $render_query_callback ); + $render_query_callback = null; + } + + return $content; + }; + + add_filter( 'render_block_core/query', $render_query_callback, 10, 2 ); + } + } elseif ( + ! empty( $enhanced_query_stack ) && + isset( $block_name ) && + ( ! $supports_client_navigation ) + ) { + foreach ( $enhanced_query_stack as $query_id ) { + $dirty_enhanced_queries[ $query_id ] = true; + } + } + + return $parsed_block; +} + +add_filter( 'render_block_data', 'block_core_query_disable_enhanced_pagination', 10, 1 ); diff --git a/src/wp-includes/blocks/read-more/index.php b/src/wp-includes/blocks/read-more/index.php new file mode 100644 index 0000000000000..c01a0a377fc93 --- /dev/null +++ b/src/wp-includes/blocks/read-more/index.php @@ -0,0 +1,63 @@ +context['postId'] ) ) { + return ''; + } + + $post_ID = $block->context['postId']; + $post_title = get_the_title( $post_ID ); + if ( '' === $post_title ) { + $post_title = sprintf( + /* translators: %s is post ID to describe the link for screen readers. */ + __( 'untitled post %s' ), + $post_ID + ); + } + $screen_reader_text = sprintf( + /* translators: %s is either the post title or post ID to describe the link for screen readers. */ + __( ': %s' ), + $post_title + ); + $justify_class_name = empty( $attributes['justifyContent'] ) ? '' : "is-justified-{$attributes['justifyContent']}"; + $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( + '%4s%5s', + $wrapper_attributes, + get_the_permalink( $post_ID ), + esc_attr( $attributes['linkTarget'] ), + $more_text, + $screen_reader_text + ); +} + +/** + * Registers the `core/read-more` block on the server. + * + * @since 6.0.0 + */ +function register_block_core_read_more() { + register_block_type_from_metadata( + __DIR__ . '/read-more', + array( + 'render_callback' => 'render_block_core_read_more', + ) + ); +} +add_action( 'init', 'register_block_core_read_more' ); diff --git a/src/wp-includes/blocks/rss/index.php b/src/wp-includes/blocks/rss/index.php new file mode 100644 index 0000000000000..5ab990bbcbcee --- /dev/null +++ b/src/wp-includes/blocks/rss/index.php @@ -0,0 +1,145 @@ +
      ' . __( 'Adding an RSS feed to this site’s homepage is not supported, as it could lead to a loop that slows down your site. Try using another block, like the Latest Posts block, to list posts from the site.' ) . '
      '; + } + + $rss = fetch_feed( $attributes['feedURL'] ); + + if ( is_wp_error( $rss ) ) { + return '
      ' . __( 'RSS Error:' ) . ' ' . esc_html( $rss->get_error_message() ) . '
      '; + } + + if ( ! $rss->get_item_quantity() ) { + return '
      ' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '
      '; + } + + $rss_items = $rss->get_items( 0, $attributes['itemsToShow'] ); + $list_items = ''; + + $open_in_new_tab = ! empty( $attributes['openInNewTab'] ); + $rel = ! empty( $attributes['rel'] ) ? trim( $attributes['rel'] ) : ''; + + $link_attributes = ''; + + if ( $open_in_new_tab ) { + $link_attributes .= ' target="_blank"'; + } + + if ( '' !== $rel ) { + $link_attributes .= ' rel="' . esc_attr( $rel ) . '"'; + } + + foreach ( $rss_items as $item ) { + $title = esc_html( trim( strip_tags( html_entity_decode( $item->get_title() ) ) ) ); + + if ( empty( $title ) ) { + $title = __( '(no title)' ); + } + $link = $item->get_link(); + $link = esc_url( $link ); + + if ( $link ) { + $title = "{$title}"; + } + $title = "
      {$title}
      "; + + $date_markup = ''; + if ( ! empty( $attributes['displayDate'] ) ) { + $timestamp = $item->get_date( 'U' ); + + if ( $timestamp ) { + $gmt_offset = get_option( 'gmt_offset' ); + $timestamp += (int) ( (float) $gmt_offset * HOUR_IN_SECONDS ); + + $date_markup = sprintf( + ' ', + esc_attr( date_i18n( 'c', $timestamp ) ), + esc_html( date_i18n( get_option( 'date_format' ), $timestamp ) ) + ); + } + } + + $author = ''; + if ( $attributes['displayAuthor'] ) { + $author = $item->get_author(); + if ( is_object( $author ) ) { + $author = $author->get_name(); + if ( ! empty( $author ) ) { + $author = '' . sprintf( + /* translators: byline. %s: author. */ + __( 'by %s' ), + esc_html( strip_tags( $author ) ) + ) . ''; + } + } + } + + $excerpt = ''; + $description = $item->get_description(); + if ( $attributes['displayExcerpt'] && ! empty( $description ) ) { + $excerpt = html_entity_decode( $description, ENT_QUOTES, get_option( 'blog_charset' ) ); + $excerpt = esc_attr( wp_trim_words( $excerpt, $attributes['excerptLength'], ' […]' ) ); + + // Change existing [...] to […]. + if ( '[...]' === substr( $excerpt, -5 ) ) { + $excerpt = substr( $excerpt, 0, -5 ) . '[…]'; + } + + $excerpt = '
      ' . esc_html( $excerpt ) . '
      '; + } + + $list_items .= "
    6. {$title}{$date_markup}{$author}{$excerpt}
    7. "; + } + + $classnames = array(); + if ( isset( $attributes['blockLayout'] ) && 'grid' === $attributes['blockLayout'] ) { + $classnames[] = 'is-grid'; + } + if ( isset( $attributes['columns'] ) && 'grid' === $attributes['blockLayout'] ) { + $classnames[] = 'columns-' . $attributes['columns']; + } + if ( $attributes['displayDate'] ) { + $classnames[] = 'has-dates'; + } + if ( $attributes['displayAuthor'] ) { + $classnames[] = 'has-authors'; + } + if ( $attributes['displayExcerpt'] ) { + $classnames[] = 'has-excerpts'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + + return sprintf( '
        %s
      ', $wrapper_attributes, $list_items ); +} + +/** + * Registers the `core/rss` block on server. + * + * @since 5.2.0 + */ +function register_block_core_rss() { + register_block_type_from_metadata( + __DIR__ . '/rss', + array( + 'render_callback' => 'render_block_core_rss', + ) + ); +} +add_action( 'init', 'register_block_core_rss' ); diff --git a/src/wp-includes/blocks/search/index.php b/src/wp-includes/blocks/search/index.php new file mode 100644 index 0000000000000..7073d6ce8ab3f --- /dev/null +++ b/src/wp-includes/blocks/search/index.php @@ -0,0 +1,621 @@ +`. Support these by defaulting an undefined label and + // buttonText to `__( 'Search' )`. + $attributes = wp_parse_args( + $attributes, + array( + 'label' => __( 'Search' ), + 'buttonText' => __( 'Search' ), + ) + ); + + $input_id = wp_unique_id( 'wp-block-search__input-' ); + $classnames = classnames_for_block_core_search( $attributes ); + $show_label = ! empty( $attributes['showLabel'] ); + $use_icon_button = ! empty( $attributes['buttonUseIcon'] ); + $show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true; + $button_position = $show_button ? $attributes['buttonPosition'] : null; + $query_params = ( ! empty( $attributes['query'] ) ) ? $attributes['query'] : array(); + $button = ''; + $query_params_markup = ''; + $inline_styles = styles_for_block_core_search( $attributes ); + $color_classes = get_color_classes_for_block_core_search( $attributes ); + $typography_classes = get_typography_classes_for_block_core_search( $attributes ); + $is_button_inside = ! empty( $attributes['buttonPosition'] ) && + 'button-inside' === $attributes['buttonPosition']; + // Border color classes need to be applied to the elements that have a border color. + $border_color_classes = get_border_color_classes_for_block_core_search( $attributes ); + // This variable is a constant and its value is always false at this moment. + // It is defined this way because some values depend on it, in case it changes in the future. + $open_by_default = false; + + $label_inner_html = empty( $attributes['label'] ) ? __( 'Search' ) : wp_kses_post( $attributes['label'] ); + $label = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['label'], $label_inner_html ) ); + if ( $label->next_tag() ) { + $label->set_attribute( 'for', $input_id ); + $label->add_class( 'wp-block-search__label' ); + if ( $show_label && ! empty( $attributes['label'] ) ) { + if ( ! empty( $typography_classes ) ) { + $label->add_class( $typography_classes ); + } + } else { + $label->add_class( 'screen-reader-text' ); + } + } + + $input = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['input'] ) ); + $input_classes = array( 'wp-block-search__input' ); + if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { + $input_classes[] = $border_color_classes; + } + if ( ! empty( $typography_classes ) ) { + $input_classes[] = $typography_classes; + } + 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( 'placeholder', $attributes['placeholder'] ); + + // If it's interactive, enqueue the script module and add the directives. + $is_expandable_searchfield = 'button-only' === $button_position; + if ( $is_expandable_searchfield ) { + wp_enqueue_script_module( '@wordpress/block-library/search/view' ); + + $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.isSearchInputVisible' ); + $input->set_attribute( 'data-wp-bind--tabindex', 'state.tabindex' ); + + // Adding these attributes manually is needed until the Interactivity API + // SSR logic is added to core. + $input->set_attribute( 'aria-hidden', 'true' ); + $input->set_attribute( 'tabindex', '-1' ); + } + } + + if ( count( $query_params ) > 0 ) { + foreach ( $query_params as $param => $value ) { + $query_params_markup .= sprintf( + '', + esc_attr( $param ), + esc_attr( $value ) + ); + } + } + + if ( $show_button ) { + $button_classes = array( 'wp-block-search__button' ); + $button_internal_markup = ''; + if ( ! empty( $color_classes ) ) { + $button_classes[] = $color_classes; + } + if ( ! empty( $typography_classes ) ) { + $button_classes[] = $typography_classes; + } + + if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { + $button_classes[] = $border_color_classes; + } + if ( ! $use_icon_button ) { + if ( ! empty( $attributes['buttonText'] ) ) { + $button_internal_markup = wp_kses_post( $attributes['buttonText'] ); + } + } else { + $button_classes[] = 'has-icon'; + $button_internal_markup = + ' + + '; + } + + // Include the button element class. + $button_classes[] = wp_theme_get_element_class_name( 'button' ); + $button = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['button'], $button_internal_markup ) ); + + if ( $button->next_tag() ) { + $button->add_class( implode( ' ', $button_classes ) ); + if ( 'button-only' === $attributes['buttonPosition'] ) { + $button->set_attribute( 'data-wp-bind--aria-label', 'state.ariaLabel' ); + $button->set_attribute( 'data-wp-bind--aria-controls', 'state.ariaControls' ); + $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.isSearchInputVisible' ); + $button->set_attribute( 'data-wp-bind--type', 'state.type' ); + $button->set_attribute( 'data-wp-on--click', 'actions.openSearchInput' ); + + // Adding these attributes manually is needed until the Interactivity + // API SSR logic is added to core. + $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); + $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); + $button->set_attribute( 'aria-expanded', 'false' ); + $button->set_attribute( 'type', 'button' ); + } else { + $button->set_attribute( 'aria-label', wp_strip_all_tags( $attributes['buttonText'] ) ); + } + } + } + + $field_markup_classes = array( + 'wp-block-search__inside-wrapper', + ); + if ( $is_button_inside && ! empty( $border_color_classes ) ) { + $field_markup_classes[] = $border_color_classes; + } + $field_markup = sprintf( + '
      %s
      ', + esc_attr( implode( ' ', $field_markup_classes ) ), + $inline_styles['wrapper'], + $input . $query_params_markup . $button + ); + $wrapper_attributes = get_block_wrapper_attributes( + array( 'class' => $classnames ) + ); + $form_directives = ''; + + // If it's interactive, add the directives. + if ( $is_expandable_searchfield ) { + $aria_label_expanded = __( 'Submit Search' ); + $aria_label_collapsed = __( 'Expand search field' ); + $form_context = wp_interactivity_data_wp_context( + array( + 'isSearchInputVisible' => $open_by_default, + 'inputId' => $input_id, + 'ariaLabelExpanded' => $aria_label_expanded, + 'ariaLabelCollapsed' => $aria_label_collapsed, + ) + ); + $form_directives = ' + data-wp-interactive="core/search" + ' . $form_context . ' + data-wp-class--wp-block-search__searchfield-hidden="!context.isSearchInputVisible" + data-wp-on--keydown="actions.handleSearchKeydown" + data-wp-on--focusout="actions.handleSearchFocusout" + '; + } + + return sprintf( + '
      %4s
      ', + esc_url( home_url( '/' ) ), + $wrapper_attributes, + $form_directives, + $label . $field_markup + ); +} + +/** + * Registers the `core/search` block on the server. + * + * @since 5.2.0 + */ +function register_block_core_search() { + register_block_type_from_metadata( + __DIR__ . '/search', + array( + 'render_callback' => 'render_block_core_search', + ) + ); +} +add_action( 'init', 'register_block_core_search' ); + +/** + * Builds the correct top level classnames for the 'core/search' block. + * + * @since 5.6.0 + * + * @param array $attributes The block attributes. + * + * @return string The classnames used in the block. + */ +function classnames_for_block_core_search( $attributes ) { + $classnames = array(); + + if ( ! empty( $attributes['buttonPosition'] ) ) { + if ( 'button-inside' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-inside'; + } + + if ( 'button-outside' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-outside'; + } + + if ( 'no-button' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__no-button'; + } + + if ( 'button-only' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-only wp-block-search__searchfield-hidden'; + } + } + + if ( isset( $attributes['buttonUseIcon'] ) ) { + if ( ! empty( $attributes['buttonPosition'] ) && 'no-button' !== $attributes['buttonPosition'] ) { + if ( $attributes['buttonUseIcon'] ) { + $classnames[] = 'wp-block-search__icon-button'; + } else { + $classnames[] = 'wp-block-search__text-button'; + } + } + } + + return implode( ' ', $classnames ); +} + +/** + * This generates a CSS rule for the given border property and side if provided. + * Based on whether the Search block is configured to display the button inside + * or not, the generated rule is injected into the appropriate collection of + * styles for later application in the block's markup. + * + * @since 6.1.0 + * + * @param array $attributes The block attributes. + * @param string $property Border property to generate rule for e.g. width or color. + * @param string $side Optional side border. The dictates the value retrieved and final CSS property. + * @param array $wrapper_styles Current collection of wrapper styles. + * @param array $button_styles Current collection of button styles. + * @param array $input_styles Current collection of input styles. + */ +function apply_block_core_search_border_style( $attributes, $property, $side, &$wrapper_styles, &$button_styles, &$input_styles ) { + $is_button_inside = isset( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition']; + + $path = array( 'style', 'border', $property ); + + if ( $side ) { + array_splice( $path, 2, 0, $side ); + } + + $value = _wp_array_get( $attributes, $path, false ); + + if ( empty( $value ) ) { + return; + } + + if ( 'color' === $property && $side ) { + $has_color_preset = str_contains( $value, 'var:preset|color|' ); + if ( $has_color_preset ) { + $named_color_value = substr( $value, strrpos( $value, '|' ) + 1 ); + $value = sprintf( 'var(--wp--preset--color--%s)', $named_color_value ); + } + } + + $property_suffix = $side ? sprintf( '%s-%s', $side, $property ) : $property; + + if ( $is_button_inside ) { + $wrapper_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + } else { + $button_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + $input_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + } +} + +/** + * This adds CSS rules for a given border property e.g. width or color. It + * injects rules into the provided wrapper, button and input style arrays for + * uniform "flat" borders or those with individual sides configured. + * + * @since 6.1.0 + * + * @param array $attributes The block attributes. + * @param string $property Border property to generate rule for e.g. width or color. + * @param array $wrapper_styles Current collection of wrapper styles. + * @param array $button_styles Current collection of button styles. + * @param array $input_styles Current collection of input styles. + */ +function apply_block_core_search_border_styles( $attributes, $property, &$wrapper_styles, &$button_styles, &$input_styles ) { + apply_block_core_search_border_style( $attributes, $property, null, $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'top', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'right', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'bottom', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'left', $wrapper_styles, $button_styles, $input_styles ); +} + +/** + * Builds an array of inline styles for the search block. + * + * The result will contain one entry for shared styles such as those for the + * inner input or button and a second for the inner wrapper should the block + * be positioning the button "inside". + * + * @since 5.8.0 + * + * @param array $attributes The block attributes. + * + * @return array Style HTML attribute. + */ +function styles_for_block_core_search( $attributes ) { + $wrapper_styles = array(); + $button_styles = array(); + $input_styles = array(); + $label_styles = array(); + $is_button_inside = ! empty( $attributes['buttonPosition'] ) && + 'button-inside' === $attributes['buttonPosition']; + $show_label = ( isset( $attributes['showLabel'] ) ) && false !== $attributes['showLabel']; + + // Add width styles. + $has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] ); + + if ( $has_width ) { + $wrapper_styles[] = sprintf( + 'width: %d%s;', + esc_attr( $attributes['width'] ), + esc_attr( $attributes['widthUnit'] ) + ); + } + + // Add border width and color styles. + apply_block_core_search_border_styles( $attributes, 'width', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_styles( $attributes, 'color', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_styles( $attributes, 'style', $wrapper_styles, $button_styles, $input_styles ); + + // Add border radius styles. + $has_border_radius = ! empty( $attributes['style']['border']['radius'] ); + + if ( $has_border_radius ) { + $default_padding = '4px'; + $border_radius = $attributes['style']['border']['radius']; + + if ( is_array( $border_radius ) ) { + // Apply styles for individual corner border radii. + foreach ( $border_radius as $key => $value ) { + // Get border-radius CSS variable from preset value if provided. + if ( is_string( $value ) && str_contains( $value, 'var:preset|border-radius|' ) ) { + $index_to_splice = strrpos( $value, '|' ) + 1; + $slug = _wp_to_kebab_case( substr( $value, $index_to_splice ) ); + $value = "var(--wp--preset--border-radius--$slug)"; + } + + if ( null !== $value ) { + // Convert camelCase key to kebab-case. + $name = strtolower( preg_replace( '/(? ! empty( $input_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $input_styles ) ) ) ) : '', + 'button' => ! empty( $button_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $button_styles ) ) ) ) : '', + 'wrapper' => ! empty( $wrapper_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $wrapper_styles ) ) ) ) : '', + 'label' => ! empty( $label_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $label_styles ) ) ) ) : '', + ); +} + +/** + * Returns typography classnames depending on whether there are named font sizes/families. + * + * @since 6.1.0 + * + * @param array $attributes The block attributes. + * + * @return string The typography color classnames to be applied to the block elements. + */ +function get_typography_classes_for_block_core_search( $attributes ) { + $typography_classes = array(); + $has_named_font_family = ! empty( $attributes['fontFamily'] ); + $has_named_font_size = ! empty( $attributes['fontSize'] ); + + if ( $has_named_font_size ) { + $typography_classes[] = sprintf( 'has-%s-font-size', esc_attr( $attributes['fontSize'] ) ); + } + + if ( $has_named_font_family ) { + $typography_classes[] = sprintf( 'has-%s-font-family', esc_attr( $attributes['fontFamily'] ) ); + } + + return implode( ' ', $typography_classes ); +} + +/** + * Returns typography styles to be included in an HTML style tag. + * This excludes text-decoration, which is applied only to the label and button elements of the search block. + * + * @since 6.1.0 + * + * @param array $attributes The block attributes. + * + * @return string A string of typography CSS declarations. + */ +function get_typography_styles_for_block_core_search( $attributes ) { + $typography_styles = array(); + + // Add typography styles. + if ( ! empty( $attributes['style']['typography']['fontSize'] ) ) { + $typography_styles[] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $attributes['style']['typography']['fontSize'], + ) + ) + ); + + } + + if ( ! empty( $attributes['style']['typography']['fontFamily'] ) ) { + $typography_styles[] = sprintf( 'font-family: %s;', $attributes['style']['typography']['fontFamily'] ); + } + + if ( ! empty( $attributes['style']['typography']['letterSpacing'] ) ) { + $typography_styles[] = sprintf( 'letter-spacing: %s;', $attributes['style']['typography']['letterSpacing'] ); + } + + if ( ! empty( $attributes['style']['typography']['fontWeight'] ) ) { + $typography_styles[] = sprintf( 'font-weight: %s;', $attributes['style']['typography']['fontWeight'] ); + } + + if ( ! empty( $attributes['style']['typography']['fontStyle'] ) ) { + $typography_styles[] = sprintf( 'font-style: %s;', $attributes['style']['typography']['fontStyle'] ); + } + + if ( ! empty( $attributes['style']['typography']['lineHeight'] ) ) { + $typography_styles[] = sprintf( 'line-height: %s;', $attributes['style']['typography']['lineHeight'] ); + } + + if ( ! empty( $attributes['style']['typography']['textTransform'] ) ) { + $typography_styles[] = sprintf( 'text-transform: %s;', $attributes['style']['typography']['textTransform'] ); + } + + return implode( '', $typography_styles ); +} + +/** + * Returns border color classnames depending on whether there are named or custom border colors. + * + * @since 5.9.0 + * + * @param array $attributes The block attributes. + * + * @return string The border color classnames to be applied to the block elements. + */ +function get_border_color_classes_for_block_core_search( $attributes ) { + $border_color_classes = array(); + $has_custom_border_color = ! empty( $attributes['style']['border']['color'] ); + $has_named_border_color = ! empty( $attributes['borderColor'] ); + + if ( $has_custom_border_color || $has_named_border_color ) { + $border_color_classes[] = 'has-border-color'; + } + + if ( $has_named_border_color ) { + $border_color_classes[] = sprintf( 'has-%s-border-color', esc_attr( $attributes['borderColor'] ) ); + } + + return implode( ' ', $border_color_classes ); +} + +/** + * Returns color classnames depending on whether there are named or custom text and background colors. + * + * @since 5.9.0 + * + * @param array $attributes The block attributes. + * + * @return string The color classnames to be applied to the block elements. + */ +function get_color_classes_for_block_core_search( $attributes ) { + $classnames = array(); + + // Text color. + $has_named_text_color = ! empty( $attributes['textColor'] ); + $has_custom_text_color = ! empty( $attributes['style']['color']['text'] ); + if ( $has_named_text_color ) { + $classnames[] = sprintf( 'has-text-color has-%s-color', $attributes['textColor'] ); + } elseif ( $has_custom_text_color ) { + // If a custom 'textColor' was selected instead of a preset, still add the generic `has-text-color` class. + $classnames[] = 'has-text-color'; + } + + // Background color. + $has_named_background_color = ! empty( $attributes['backgroundColor'] ); + $has_custom_background_color = ! empty( $attributes['style']['color']['background'] ); + $has_named_gradient = ! empty( $attributes['gradient'] ); + $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); + if ( + $has_named_background_color || + $has_custom_background_color || + $has_named_gradient || + $has_custom_gradient + ) { + $classnames[] = 'has-background'; + } + if ( $has_named_background_color ) { + $classnames[] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] ); + } + if ( $has_named_gradient ) { + $classnames[] = sprintf( 'has-%s-gradient-background', $attributes['gradient'] ); + } + + return implode( ' ', $classnames ); +} diff --git a/src/wp-includes/blocks/shortcode/index.php b/src/wp-includes/blocks/shortcode/index.php new file mode 100644 index 0000000000000..d96acfc55fa64 --- /dev/null +++ b/src/wp-includes/blocks/shortcode/index.php @@ -0,0 +1,35 @@ + 'render_block_core_shortcode', + ) + ); +} +add_action( 'init', 'register_block_core_shortcode' ); diff --git a/src/wp-includes/blocks/site-logo/index.php b/src/wp-includes/blocks/site-logo/index.php new file mode 100644 index 0000000000000..915563461e30c --- /dev/null +++ b/src/wp-includes/blocks/site-logo/index.php @@ -0,0 +1,234 @@ +(.*?)#i', '\1', $custom_logo ); + } + + if ( $attributes['isLink'] && '_blank' === $attributes['linkTarget'] ) { + // Add the link target after the rel="home". + // Add an aria-label for informing that the page opens in a new tab. + $processor = new WP_HTML_Tag_Processor( $custom_logo ); + $processor->next_tag( 'a' ); + if ( 'home' === $processor->get_attribute( 'rel' ) ) { + $processor->set_attribute( 'aria-label', __( '(Home link, opens in a new tab)' ) ); + $processor->set_attribute( 'target', $attributes['linkTarget'] ); + } + $custom_logo = $processor->get_updated_html(); + } + + $classnames = array(); + if ( empty( $attributes['width'] ) ) { + $classnames[] = 'is-default-size'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + $html = sprintf( '
      %s
      ', $wrapper_attributes, $custom_logo ); + return $html; +} + +/** + * Register a core site setting for a site logo + * + * @since 5.8.0 + */ +function register_block_core_site_logo_setting() { + register_setting( + 'general', + 'site_logo', + array( + 'show_in_rest' => array( + 'name' => 'site_logo', + ), + 'type' => 'integer', + 'label' => __( 'Logo' ), + 'description' => __( 'Site logo.' ), + ) + ); +} + +add_action( 'rest_api_init', 'register_block_core_site_logo_setting', 10 ); + +/** + * Register a core site setting for a site icon + * + * @since 5.9.0 + */ +function register_block_core_site_icon_setting() { + register_setting( + 'general', + 'site_icon', + array( + 'show_in_rest' => true, + 'type' => 'integer', + 'label' => __( 'Icon' ), + 'description' => __( 'Site icon.' ), + ) + ); +} + +add_action( 'rest_api_init', 'register_block_core_site_icon_setting', 10 ); + +/** + * Registers the `core/site-logo` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_site_logo() { + register_block_type_from_metadata( + __DIR__ . '/site-logo', + array( + 'render_callback' => 'render_block_core_site_logo', + ) + ); +} + +add_action( 'init', 'register_block_core_site_logo' ); + +/** + * Overrides the custom logo with a site logo, if the option is set. + * + * @since 5.8.0 + * + * @param string $custom_logo The custom logo set by a theme. + * + * @return string The site logo if set. + */ +function _override_custom_logo_theme_mod( $custom_logo ) { + $site_logo = get_option( 'site_logo' ); + return false === $site_logo ? $custom_logo : $site_logo; +} + +add_filter( 'theme_mod_custom_logo', '_override_custom_logo_theme_mod' ); + +/** + * Updates the site_logo option when the custom_logo theme-mod gets updated. + * + * @since 5.8.0 + * + * @param mixed $value Attachment ID of the custom logo or an empty value. + * @return mixed + */ +function _sync_custom_logo_to_site_logo( $value ) { + if ( empty( $value ) ) { + delete_option( 'site_logo' ); + } else { + update_option( 'site_logo', $value ); + } + + return $value; +} + +add_filter( 'pre_set_theme_mod_custom_logo', '_sync_custom_logo_to_site_logo' ); + +/** + * Deletes the site_logo when the custom_logo theme mod is removed. + * + * @since 5.8.0 + * + * @global array $_ignore_site_logo_changes + * + * @param array $old_value Previous theme mod settings. + * @param array $value Updated theme mod settings. + */ +function _delete_site_logo_on_remove_custom_logo( $old_value, $value ) { + global $_ignore_site_logo_changes; + + if ( $_ignore_site_logo_changes ) { + return; + } + + // If the custom_logo is being unset, it's being removed from theme mods. + if ( isset( $old_value['custom_logo'] ) && ! isset( $value['custom_logo'] ) ) { + delete_option( 'site_logo' ); + } +} + +/** + * Deletes the site logo when all theme mods are being removed. + * + * @since 5.8.0 + * + * @global array $_ignore_site_logo_changes + */ +function _delete_site_logo_on_remove_theme_mods() { + global $_ignore_site_logo_changes; + + if ( $_ignore_site_logo_changes ) { + return; + } + + if ( false !== get_theme_support( 'custom-logo' ) ) { + delete_option( 'site_logo' ); + } +} + +/** + * Hooks `_delete_site_logo_on_remove_custom_logo` in `update_option_theme_mods_$theme`. + * Hooks `_delete_site_logo_on_remove_theme_mods` in `delete_option_theme_mods_$theme`. + * + * Runs on `setup_theme` to account for dynamically-switched themes in the Customizer. + * + * @since 5.8.0 + */ +function _delete_site_logo_on_remove_custom_logo_on_setup_theme() { + $theme = get_option( 'stylesheet' ); + add_action( "update_option_theme_mods_$theme", '_delete_site_logo_on_remove_custom_logo', 10, 2 ); + add_action( "delete_option_theme_mods_$theme", '_delete_site_logo_on_remove_theme_mods' ); +} +add_action( 'setup_theme', '_delete_site_logo_on_remove_custom_logo_on_setup_theme', 11 ); + +/** + * Removes the custom_logo theme-mod when the site_logo option gets deleted. + * + * @since 5.9.0 + * + * @global array $_ignore_site_logo_changes + */ +function _delete_custom_logo_on_remove_site_logo() { + global $_ignore_site_logo_changes; + + // Prevent _delete_site_logo_on_remove_custom_logo and + // _delete_site_logo_on_remove_theme_mods from firing and causing an + // infinite loop. + $_ignore_site_logo_changes = true; + + // Remove the custom logo. + remove_theme_mod( 'custom_logo' ); + + $_ignore_site_logo_changes = false; +} +add_action( 'delete_option_site_logo', '_delete_custom_logo_on_remove_site_logo' ); diff --git a/src/wp-includes/blocks/site-tagline/index.php b/src/wp-includes/blocks/site-tagline/index.php new file mode 100644 index 0000000000000..b59e1e556c320 --- /dev/null +++ b/src/wp-includes/blocks/site-tagline/index.php @@ -0,0 +1,53 @@ + $align_class_name ) ); + + if ( isset( $attributes['level'] ) && 0 !== $attributes['level'] ) { + $tag_name = 'h' . (int) $attributes['level']; + } + + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + $site_tagline + ); +} + +/** + * Registers the `core/site-tagline` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_site_tagline() { + register_block_type_from_metadata( + __DIR__ . '/site-tagline', + array( + 'render_callback' => 'render_block_core_site_tagline', + ) + ); +} + +add_action( 'init', 'register_block_core_site_tagline' ); diff --git a/src/wp-includes/blocks/site-title/index.php b/src/wp-includes/blocks/site-title/index.php new file mode 100644 index 0000000000000..297d99894e104 --- /dev/null +++ b/src/wp-includes/blocks/site-title/index.php @@ -0,0 +1,69 @@ +%4$s', + esc_url( home_url() ), + esc_attr( $link_target ), + $aria_current, + esc_html( $site_title ) + ); + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classes ) ) ); + + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + // already pre-escaped if it is a link. + $attributes['isLink'] ? $site_title : esc_html( $site_title ) + ); +} + +/** + * Registers the `core/site-title` block on the server. + * + * @since 5.8.0 + */ +function register_block_core_site_title() { + register_block_type_from_metadata( + __DIR__ . '/site-title', + array( + 'render_callback' => 'render_block_core_site_title', + ) + ); +} +add_action( 'init', 'register_block_core_site_title' ); diff --git a/src/wp-includes/blocks/social-link/index.php b/src/wp-includes/blocks/social-link/index.php new file mode 100644 index 0000000000000..0225a14d7beb5 --- /dev/null +++ b/src/wp-includes/blocks/social-link/index.php @@ -0,0 +1,408 @@ +context['openInNewTab'] ?? false; + + $text = ! empty( $attributes['label'] ) ? trim( $attributes['label'] ) : ''; + + $service = $attributes['service'] ?? 'Icon'; + $url = $attributes['url'] ?? false; + $text = $text ? $text : block_core_social_link_get_name( $service ); + $rel = $attributes['rel'] ?? ''; + $show_labels = array_key_exists( 'showLabels', $block->context ) ? $block->context['showLabels'] : false; + + // Don't render a link if there is no URL set. + if ( ! $url ) { + return ''; + } + + /** + * Prepend emails with `mailto:` if not set. + * The `is_email` returns false for emails with schema. + */ + if ( is_email( $url ) ) { + $url = 'mailto:' . antispambot( $url ); + } + + /** + * Prepend URL with https:// if it doesn't appear to contain a scheme + * and it's not a relative link or a fragment. + */ + if ( ! parse_url( $url, PHP_URL_SCHEME ) && ! str_starts_with( $url, '//' ) && ! str_starts_with( $url, '#' ) ) { + $url = 'https://' . $url; + } + + $icon = block_core_social_link_get_icon( $service ); + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => 'wp-social-link wp-social-link-' . $service . block_core_social_link_get_color_classes( $block->context ), + 'style' => block_core_social_link_get_color_styles( $block->context ), + ) + ); + + $link = '
    8. '; + $link .= ''; + $link .= $icon; + $link .= '' . esc_html( $text ) . ''; + $link .= '
    9. '; + + $processor = new WP_HTML_Tag_Processor( $link ); + $processor->next_tag( 'a' ); + if ( $open_in_new_tab ) { + $processor->set_attribute( 'rel', trim( $rel . ' noopener nofollow' ) ); + $processor->set_attribute( 'target', '_blank' ); + } elseif ( '' !== $rel ) { + $processor->set_attribute( 'rel', trim( $rel ) ); + } + return $processor->get_updated_html(); +} + +/** + * Registers the `core/social-link` blocks. + * + * @since 5.4.0 + */ +function register_block_core_social_link() { + register_block_type_from_metadata( + __DIR__ . '/social-link', + array( + 'render_callback' => 'render_block_core_social_link', + ) + ); +} +add_action( 'init', 'register_block_core_social_link' ); + + +/** + * Returns the SVG for social link. + * + * @since 5.4.0 + * + * @param string $service The service icon. + * + * @return string SVG Element for service icon. + */ +function block_core_social_link_get_icon( $service ) { + $services = block_core_social_link_services(); + if ( isset( $services[ $service ] ) && isset( $services[ $service ]['icon'] ) ) { + return $services[ $service ]['icon']; + } + + return $services['share']['icon']; +} + +/** + * Returns the brand name for social link. + * + * @since 5.4.0 + * + * @param string $service The service icon. + * + * @return string Brand label. + */ +function block_core_social_link_get_name( $service ) { + $services = block_core_social_link_services(); + if ( isset( $services[ $service ] ) && isset( $services[ $service ]['name'] ) ) { + return $services[ $service ]['name']; + } + + return $services['share']['name']; +} + +/** + * Returns the SVG for social link. + * + * @since 5.4.0 + * + * @param string $service The service slug to extract data from. + * @param string $field The field ('name', 'icon', etc) to extract for a service. + * + * @return array|string + */ +function block_core_social_link_services( $service = '', $field = '' ) { + $services_data = array( + 'fivehundredpx' => array( + 'name' => _x( '500px', 'social link block variation name' ), + 'icon' => '', + ), + 'amazon' => array( + 'name' => _x( 'Amazon', 'social link block variation name' ), + 'icon' => '', + ), + 'bandcamp' => array( + 'name' => _x( 'Bandcamp', 'social link block variation name' ), + 'icon' => '', + ), + 'behance' => array( + 'name' => _x( 'Behance', 'social link block variation name' ), + 'icon' => '', + ), + 'bluesky' => array( + 'name' => _x( 'Bluesky', 'social link block variation name' ), + 'icon' => '', + ), + 'chain' => array( + 'name' => _x( 'Link', 'social link block variation name' ), + 'icon' => '', + ), + 'codepen' => array( + 'name' => _x( 'CodePen', 'social link block variation name' ), + 'icon' => '', + ), + 'deviantart' => array( + 'name' => _x( 'DeviantArt', 'social link block variation name' ), + 'icon' => '', + ), + 'discord' => array( + 'name' => _x( 'Discord', 'social link block variation name' ), + 'icon' => '', + ), + 'dribbble' => array( + 'name' => _x( 'Dribbble', 'social link block variation name' ), + 'icon' => '', + ), + 'dropbox' => array( + 'name' => _x( 'Dropbox', 'social link block variation name' ), + 'icon' => '', + ), + 'etsy' => array( + 'name' => _x( 'Etsy', 'social link block variation name' ), + 'icon' => '', + ), + 'facebook' => array( + 'name' => _x( 'Facebook', 'social link block variation name' ), + 'icon' => '', + ), + 'feed' => array( + 'name' => _x( 'RSS Feed', 'social link block variation name' ), + 'icon' => '', + ), + 'flickr' => array( + 'name' => _x( 'Flickr', 'social link block variation name' ), + 'icon' => '', + ), + 'foursquare' => array( + 'name' => _x( 'Foursquare', 'social link block variation name' ), + 'icon' => '', + ), + 'goodreads' => array( + 'name' => _x( 'Goodreads', 'social link block variation name' ), + 'icon' => '', + ), + 'google' => array( + 'name' => _x( 'Google', 'social link block variation name' ), + 'icon' => '', + ), + 'github' => array( + 'name' => _x( 'GitHub', 'social link block variation name' ), + 'icon' => '', + ), + 'gravatar' => array( + 'name' => _x( 'Gravatar', 'social link block variation name' ), + 'icon' => '', + ), + 'instagram' => array( + 'name' => _x( 'Instagram', 'social link block variation name' ), + 'icon' => '', + ), + 'lastfm' => array( + 'name' => _x( 'Last.fm', 'social link block variation name' ), + 'icon' => '', + ), + 'linkedin' => array( + 'name' => _x( 'LinkedIn', 'social link block variation name' ), + 'icon' => '', + ), + 'mail' => array( + 'name' => _x( 'Mail', 'social link block variation name' ), + 'icon' => '', + ), + 'mastodon' => array( + 'name' => _x( 'Mastodon', 'social link block variation name' ), + 'icon' => '', + ), + 'meetup' => array( + 'name' => _x( 'Meetup', 'social link block variation name' ), + 'icon' => '', + ), + 'medium' => array( + 'name' => _x( 'Medium', 'social link block variation name' ), + 'icon' => '', + ), + 'patreon' => array( + 'name' => _x( 'Patreon', 'social link block variation name' ), + 'icon' => '', + ), + 'pinterest' => array( + 'name' => _x( 'Pinterest', 'social link block variation name' ), + 'icon' => '', + ), + 'pocket' => array( + 'name' => _x( 'Pocket', 'social link block variation name' ), + 'icon' => '', + ), + 'reddit' => array( + 'name' => _x( 'Reddit', 'social link block variation name' ), + 'icon' => '', + ), + 'share' => array( + 'name' => _x( 'Share Icon', 'social link block variation name' ), + 'icon' => '', + ), + 'skype' => array( + 'name' => _x( 'Skype', 'social link block variation name' ), + 'icon' => '', + ), + 'snapchat' => array( + 'name' => _x( 'Snapchat', 'social link block variation name' ), + 'icon' => '', + ), + 'soundcloud' => array( + 'name' => _x( 'SoundCloud', 'social link block variation name' ), + 'icon' => '', + ), + 'spotify' => array( + 'name' => _x( 'Spotify', 'social link block variation name' ), + 'icon' => '', + ), + 'telegram' => array( + 'name' => _x( 'Telegram', 'social link block variation name' ), + 'icon' => '', + ), + 'threads' => array( + 'name' => _x( 'Threads', 'social link block variation name' ), + 'icon' => '', + ), + 'tiktok' => array( + 'name' => _x( 'TikTok', 'social link block variation name' ), + 'icon' => '', + ), + 'tumblr' => array( + 'name' => _x( 'Tumblr', 'social link block variation name' ), + 'icon' => '', + ), + 'twitch' => array( + 'name' => _x( 'Twitch', 'social link block variation name' ), + 'icon' => '', + ), + 'twitter' => array( + 'name' => _x( 'Twitter', 'social link block variation name' ), + 'icon' => '', + ), + 'vimeo' => array( + 'name' => _x( 'Vimeo', 'social link block variation name' ), + 'icon' => '', + ), + 'vk' => array( + 'name' => _x( 'VK', 'social link block variation name' ), + 'icon' => '', + ), + 'wordpress' => array( + 'name' => _x( 'WordPress', 'social link block variation name' ), + 'icon' => '', + ), + 'whatsapp' => array( + 'name' => _x( 'WhatsApp', 'social link block variation name' ), + 'icon' => '', + ), + 'x' => array( + 'name' => _x( 'X', 'social link block variation name' ), + 'icon' => '', + ), + 'yelp' => array( + 'name' => _x( 'Yelp', 'social link block variation name' ), + 'icon' => '', + ), + 'youtube' => array( + 'name' => _x( 'YouTube', 'social link block variation name' ), + 'icon' => '', + ), + ); + + /** + * Filter the list of available social service. + * + * This can be used to change icons or add custom icons (additionally to variations in the editor). + * Icons should be directly renderable - therefore SVGs work best. + * + * @since 6.9.0 + * + * @param array $services_data The list of services. Each item is an array containing a 'name' and 'icon' key. + * @return array The list of social services. + */ + $services_data = apply_filters( 'block_core_social_link_get_services', $services_data ); + + if ( ! empty( $service ) + && ! empty( $field ) + && isset( $services_data[ $service ] ) + && ( 'icon' === $field || 'name' === $field ) + ) { + return $services_data[ $service ][ $field ]; + } elseif ( ! empty( $service ) && isset( $services_data[ $service ] ) ) { + return $services_data[ $service ]; + } + + return $services_data; +} + +/** + * Returns CSS styles for icon and icon background colors. + * + * @since 5.7.0 + * + * @param array $context Block context passed to Social Link. + * + * @return string Inline CSS styles for link's icon and background colors. + */ +function block_core_social_link_get_color_styles( $context ) { + $styles = array(); + + if ( array_key_exists( 'iconColorValue', $context ) ) { + $styles[] = 'color:' . $context['iconColorValue'] . ';'; + } + + if ( array_key_exists( 'iconBackgroundColorValue', $context ) ) { + $styles[] = 'background-color:' . $context['iconBackgroundColorValue'] . ';'; + } + + return implode( '', $styles ); +} + +/** + * Returns CSS classes for icon and icon background colors. + * + * @since 6.3.0 + * + * @param array $context Block context passed to Social Sharing Link. + * + * @return string CSS classes for link's icon and background colors. + */ +function block_core_social_link_get_color_classes( $context ) { + $classes = array(); + + if ( array_key_exists( 'iconColor', $context ) ) { + $classes[] = 'has-' . $context['iconColor'] . '-color'; + } + + if ( array_key_exists( 'iconBackgroundColor', $context ) ) { + $classes[] = 'has-' . $context['iconBackgroundColor'] . '-background-color'; + } + + return ' ' . implode( ' ', $classes ); +} diff --git a/src/wp-includes/blocks/tag-cloud/index.php b/src/wp-includes/blocks/tag-cloud/index.php new file mode 100644 index 0000000000000..8949dd8e5b11f --- /dev/null +++ b/src/wp-includes/blocks/tag-cloud/index.php @@ -0,0 +1,63 @@ +[a-z%]+)$/i', $smallest_font_size, $m ) ? $m['unit'] : 'pt' ); + + $args = array( + 'echo' => false, + 'unit' => $unit, + 'taxonomy' => $attributes['taxonomy'], + 'show_count' => $attributes['showTagCounts'], + 'number' => $attributes['numberOfTags'], + 'smallest' => floatVal( $attributes['smallestFontSize'] ), + 'largest' => floatVal( $attributes['largestFontSize'] ), + ); + $tag_cloud = wp_tag_cloud( $args ); + + if ( empty( $tag_cloud ) ) { + // Display placeholder content when there are no tags only in editor. + if ( wp_is_serving_rest_request() ) { + $tag_cloud = __( 'There’s no content to show here yet.' ); + } else { + return ''; + } + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + return sprintf( + '

      %2$s

      ', + $wrapper_attributes, + $tag_cloud + ); +} + +/** + * Registers the `core/tag-cloud` block on server. + * + * @since 5.2.0 + */ +function register_block_core_tag_cloud() { + register_block_type_from_metadata( + __DIR__ . '/tag-cloud', + array( + 'render_callback' => 'render_block_core_tag_cloud', + ) + ); +} +add_action( 'init', 'register_block_core_tag_cloud' ); diff --git a/src/wp-includes/blocks/template-part/index.php b/src/wp-includes/blocks/template-part/index.php new file mode 100644 index 0000000000000..5c0ce01ceba97 --- /dev/null +++ b/src/wp-includes/blocks/template-part/index.php @@ -0,0 +1,307 @@ + 'wp_template_part', + 'post_status' => 'publish', + 'post_name__in' => array( $attributes['slug'] ), + 'tax_query' => array( + array( + 'taxonomy' => 'wp_theme', + 'field' => 'name', + 'terms' => $theme, + ), + ), + 'posts_per_page' => 1, + 'no_found_rows' => true, + 'lazy_load_term_meta' => false, // Do not lazy load term meta, as template parts only have one term. + ) + ); + $template_part_post = $template_part_query->have_posts() ? $template_part_query->next_post() : null; + if ( $template_part_post ) { + // A published post might already exist if this template part was customized elsewhere + // or if it's part of a customized template. + $block_template = _build_block_template_result_from_post( $template_part_post ); + $content = $block_template->content; + if ( isset( $block_template->area ) ) { + $area = $block_template->area; + } + /** + * Fires when a block template part is loaded from a template post stored in the database. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param WP_Post $template_part_post The template part post object. + * @param string $content The template part content. + */ + do_action( 'render_block_core_template_part_post', $template_part_id, $attributes, $template_part_post, $content ); + } else { + $template_part_file_path = ''; + // Else, if the template part was provided by the active theme, + // render the corresponding file content. + if ( 0 === validate_file( $attributes['slug'] ) ) { + $block_template = get_block_file_template( $template_part_id, 'wp_template_part' ); + + if ( isset( $block_template->content ) ) { + $content = $block_template->content; + } + if ( isset( $block_template->area ) ) { + $area = $block_template->area; + } + + // Needed for the `render_block_core_template_part_file` and `render_block_core_template_part_none` actions below. + $block_template_file = _get_block_template_file( 'wp_template_part', $attributes['slug'] ); + if ( $block_template_file ) { + $template_part_file_path = $block_template_file['path']; + } + } + + if ( '' !== $content && null !== $content ) { + /** + * Fires when a block template part is loaded from a template part in the theme. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param string $template_part_file_path Absolute path to the template path. + * @param string $content The template part content. + */ + do_action( 'render_block_core_template_part_file', $template_part_id, $attributes, $template_part_file_path, $content ); + } else { + /** + * Fires when a requested block template part does not exist in the database nor in the theme. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param string $template_part_file_path Absolute path to the not found template path. + */ + do_action( 'render_block_core_template_part_none', $template_part_id, $attributes, $template_part_file_path ); + } + } + } + + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + if ( is_null( $content ) ) { + if ( $is_debug && isset( $attributes['slug'] ) ) { + return sprintf( + /* translators: %s: Template part slug. */ + __( 'Template part has been deleted or is unavailable: %s' ), + $attributes['slug'] + ); + } + + return ''; + } + + if ( isset( $seen_ids[ $template_part_id ] ) ) { + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + // Look up area definition. + $area_definition = null; + $defined_areas = get_allowed_block_template_part_areas(); + foreach ( $defined_areas as $defined_area ) { + if ( $defined_area['area'] === $area ) { + $area_definition = $defined_area; + break; + } + } + + // If $area is not allowed, set it back to the uncategorized default. + if ( ! $area_definition ) { + $area = WP_TEMPLATE_PART_AREA_UNCATEGORIZED; + } + + // Run through the actions that are typically taken on the_content. + $content = shortcode_unautop( $content ); + $content = do_shortcode( $content ); + $seen_ids[ $template_part_id ] = true; + $content = do_blocks( $content ); + unset( $seen_ids[ $template_part_id ] ); + $content = wptexturize( $content ); + $content = convert_smilies( $content ); + $content = wp_filter_content_tags( $content, "template_part_{$area}" ); + + /** + * Handle embeds for block template parts. + * + * @global WP_Embed $wp_embed WordPress Embed object. + */ + global $wp_embed; + $content = $wp_embed->autoembed( $content ); + + if ( empty( $attributes['tagName'] ) || tag_escape( $attributes['tagName'] ) !== $attributes['tagName'] ) { + $area_tag = 'div'; + if ( $area_definition && isset( $area_definition['area_tag'] ) ) { + $area_tag = $area_definition['area_tag']; + } + $html_tag = $area_tag; + } else { + $html_tag = esc_attr( $attributes['tagName'] ); + } + $wrapper_attributes = get_block_wrapper_attributes(); + + return "<$html_tag $wrapper_attributes>" . str_replace( ']]>', ']]>', $content ) . ""; +} + +/** + * Returns an array of area variation objects for the template part block. + * + * @since 6.1.0 + * + * @param array $instance_variations The variations for instances. + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_area_variations( $instance_variations ) { + $variations = array(); + $defined_areas = get_allowed_block_template_part_areas(); + + foreach ( $defined_areas as $area ) { + if ( 'uncategorized' !== $area['area'] ) { + $has_instance_for_area = false; + foreach ( $instance_variations as $variation ) { + if ( $variation['attributes']['area'] === $area['area'] ) { + $has_instance_for_area = true; + break; + } + } + + $scope = $has_instance_for_area ? array() : array( 'inserter' ); + + $variations[] = array( + 'name' => 'area_' . $area['area'], + 'title' => $area['label'], + 'description' => $area['description'], + 'attributes' => array( + 'area' => $area['area'], + ), + 'scope' => $scope, + 'icon' => $area['icon'], + ); + } + } + return $variations; +} + +/** + * Returns an array of instance variation objects for the template part block + * + * @since 6.1.0 + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_instance_variations() { + // Block themes are unavailable during installation. + if ( wp_installing() ) { + return array(); + } + + if ( ! current_theme_supports( 'block-templates' ) && ! current_theme_supports( 'block-template-parts' ) ) { + return array(); + } + + $variations = array(); + $template_parts = get_block_templates( + array( + 'post_type' => 'wp_template_part', + ), + 'wp_template_part' + ); + + $defined_areas = get_allowed_block_template_part_areas(); + $icon_by_area = array_combine( array_column( $defined_areas, 'area' ), array_column( $defined_areas, 'icon' ) ); + + foreach ( $template_parts as $template_part ) { + $variations[] = array( + 'name' => 'instance_' . sanitize_title( $template_part->slug ), + 'title' => $template_part->title, + // If there's no description for the template part don't show the + // block description. This is a bit hacky, but prevent the fallback + // by using a non-breaking space so that the value of description + // isn't falsey. + 'description' => $template_part->description || ' ', + 'attributes' => array( + 'slug' => $template_part->slug, + 'theme' => $template_part->theme, + 'area' => $template_part->area, + ), + 'scope' => array( 'inserter' ), + 'icon' => $icon_by_area[ $template_part->area ] ?? null, + 'example' => array( + 'attributes' => array( + 'slug' => $template_part->slug, + 'theme' => $template_part->theme, + 'area' => $template_part->area, + ), + ), + ); + } + return $variations; +} + +/** + * Returns an array of all template part block variations. + * + * @since 5.9.0 + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_variations() { + $instance_variations = build_template_part_block_instance_variations(); + $area_variations = build_template_part_block_area_variations( $instance_variations ); + return array_merge( $area_variations, $instance_variations ); +} + +/** + * Registers the `core/template-part` block on the server. + * + * @since 5.9.0 + */ +function register_block_core_template_part() { + register_block_type_from_metadata( + __DIR__ . '/template-part', + array( + 'render_callback' => 'render_block_core_template_part', + 'variation_callback' => 'build_template_part_block_variations', + ) + ); +} +add_action( 'init', 'register_block_core_template_part' ); diff --git a/src/wp-includes/blocks/term-count/index.php b/src/wp-includes/blocks/term-count/index.php new file mode 100644 index 0000000000000..9794896524eb4 --- /dev/null +++ b/src/wp-includes/blocks/term-count/index.php @@ -0,0 +1,80 @@ +context['termId'] ) && isset( $block->context['taxonomy'] ) ) { + $term = get_term( $block->context['termId'], $block->context['taxonomy'] ); + } else { + $term = get_queried_object(); + if ( ! $term instanceof WP_Term ) { + $term = null; + } + } + + if ( ! $term || is_wp_error( $term ) ) { + return ''; + } + + $term_count = $term->count; + + // Format the term count based on bracket type. + switch ( $attributes['bracketType'] ) { + case 'none': + // No formatting needed. + break; + case 'round': + $term_count = "({$term_count})"; + break; + case 'square': + $term_count = "[{$term_count}]"; + break; + case 'curly': + $term_count = "{{$term_count}}"; + break; + case 'angle': + $term_count = "<{$term_count}>"; + break; + default: + // Default to no formatting for unknown types. + break; + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + return sprintf( + '
      %2$s
      ', + $wrapper_attributes, + $term_count + ); +} + +/** + * Registers the `core/term-count` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_term_count() { + register_block_type_from_metadata( + __DIR__ . '/term-count', + array( + 'render_callback' => 'render_block_core_term_count', + ) + ); +} +add_action( 'init', 'register_block_core_term_count' ); diff --git a/src/wp-includes/blocks/term-description/index.php b/src/wp-includes/blocks/term-description/index.php new file mode 100644 index 0000000000000..9f61dbba07fbc --- /dev/null +++ b/src/wp-includes/blocks/term-description/index.php @@ -0,0 +1,61 @@ +context['termId'] ) && isset( $block->context['taxonomy'] ) ) { + $term = get_term( $block->context['termId'], $block->context['taxonomy'] ); + if ( $term && ! is_wp_error( $term ) ) { + $term_description = $term->description; + } + } elseif ( is_category() || is_tag() || is_tax() ) { + $term_description = term_description(); + } + + if ( empty( $term_description ) ) { + return ''; + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return '
      ' . $term_description . '
      '; +} + +/** + * Registers the `core/term-description` block on the server. + * + * @since 5.9.0 + */ +function register_block_core_term_description() { + register_block_type_from_metadata( + __DIR__ . '/term-description', + array( + 'render_callback' => 'render_block_core_term_description', + ) + ); +} +add_action( 'init', 'register_block_core_term_description' ); diff --git a/src/wp-includes/blocks/term-name/index.php b/src/wp-includes/blocks/term-name/index.php new file mode 100644 index 0000000000000..a583371f7e1eb --- /dev/null +++ b/src/wp-includes/blocks/term-name/index.php @@ -0,0 +1,81 @@ +context['termId'] ) && isset( $block->context['taxonomy'] ) ) { + $term = get_term( $block->context['termId'], $block->context['taxonomy'] ); + } else { + $term = get_queried_object(); + if ( ! $term instanceof WP_Term ) { + $term = null; + } + } + + if ( ! $term || is_wp_error( $term ) ) { + return ''; + } + + $term_name = $term->name; + $level = $attributes['level'] ?? 0; + $tag_name = 0 === $level ? 'p' : 'h' . (int) $level; + + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $term_link = get_term_link( $term ); + if ( ! is_wp_error( $term_link ) ) { + $term_name = sprintf( + '%2$s', + esc_url( $term_link ), + $term_name + ); + } + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<%1$s %2$s>%3$s', + $tag_name, + $wrapper_attributes, + $term_name + ); +} + +/** + * Registers the `core/term-name` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_term_name() { + register_block_type_from_metadata( + __DIR__ . '/term-name', + array( + 'render_callback' => 'render_block_core_term_name', + ) + ); +} +add_action( 'init', 'register_block_core_term_name' ); diff --git a/src/wp-includes/blocks/term-template/index.php b/src/wp-includes/blocks/term-template/index.php new file mode 100644 index 0000000000000..c6fa390c4ec47 --- /dev/null +++ b/src/wp-includes/blocks/term-template/index.php @@ -0,0 +1,137 @@ +context ) || empty( $block->context['termQuery'] ) ) { + return ''; + } + + $query = $block->context['termQuery']; + + $query_args = array( + 'number' => $query['perPage'], + 'order' => $query['order'], + 'orderby' => $query['orderBy'], + 'hide_empty' => $query['hideEmpty'], + ); + + $inherit_query = isset( $query['inherit'] ) + && $query['inherit'] + && ( is_tax() || is_category() || is_tag() ); + + if ( $inherit_query ) { + // Get the current term and taxonomy from the queried object. + $queried_object = get_queried_object(); + + // For hierarchical taxonomies, show children of the current term. + // For non-hierarchical taxonomies, show all terms (don't set parent). + if ( is_taxonomy_hierarchical( $queried_object->taxonomy ) ) { + // If showNested is true, use child_of to include nested terms. + // Otherwise, use parent to show only direct children. + if ( ! empty( $query['showNested'] ) ) { + $query_args['child_of'] = $queried_object->term_id; + } else { + $query_args['parent'] = $queried_object->term_id; + } + } + $query_args['taxonomy'] = $queried_object->taxonomy; + } else { + // If not inheriting set `taxonomy` from the block attribute. + $query_args['taxonomy'] = $query['taxonomy']; + + // If we are including specific terms we ignore `showNested` argument. + if ( ! empty( $query['include'] ) ) { + $query_args['include'] = array_unique( array_map( 'intval', $query['include'] ) ); + $query_args['orderby'] = 'include'; + $query_args['order'] = 'asc'; + } elseif ( is_taxonomy_hierarchical( $query['taxonomy'] ) && empty( $query['showNested'] ) ) { + // We set parent only when inheriting from the taxonomy archive context or not + // showing nested terms, otherwise nested terms are not displayed. + $query_args['parent'] = 0; + } + } + + $terms_query = new WP_Term_Query( $query_args ); + $terms = $terms_query->get_terms(); + + if ( ! $terms || is_wp_error( $terms ) ) { + return ''; + } + + $content = ''; + foreach ( $terms as $term ) { + // Get an instance of the current Term Template block. + $block_instance = $block->parsed_block; + + // Set the block name to one that does not correspond to an existing registered block. + // This ensures that for the inner instances of the Term Template block, we do not render any block supports. + $block_instance['blockName'] = 'core/null'; + + $term_id = $term->term_id; + $taxonomy = $term->taxonomy; + + $filter_block_context = static function ( $context ) use ( $term_id, $taxonomy ) { + $context['termId'] = $term_id; + $context['taxonomy'] = $taxonomy; + return $context; + }; + + // Use an early priority to so that other 'render_block_context' filters have access to the values. + add_filter( 'render_block_context', $filter_block_context, 1 ); + + // Render the inner blocks of the Term Template block with `dynamic` set to `false` to prevent calling + // `render_callback` and ensure that no wrapper markup is included. + $block_content = ( new WP_Block( $block_instance ) )->render( array( 'dynamic' => false ) ); + + remove_filter( 'render_block_context', $filter_block_context, 1 ); + + // Wrap the render inner blocks in a `li` element with the appropriate term classes. + $term_classes = "wp-block-term term-{$term->term_id} {$term->taxonomy} taxonomy-{$term->taxonomy}"; + + $content .= '
    10. ' . $block_content . '
    11. '; + } + + $classnames = ''; + + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classnames .= 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classnames ) ) ); + + return sprintf( + '
        %s
      ', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/term-template` block on the server. + * + * @since 6.9.0 + */ +function register_block_core_term_template() { + register_block_type_from_metadata( + __DIR__ . '/term-template', + array( + 'render_callback' => 'render_block_core_term_template', + ) + ); +} +add_action( 'init', 'register_block_core_term_template' ); diff --git a/src/wp-includes/blocks/video/index.php b/src/wp-includes/blocks/video/index.php new file mode 100644 index 0000000000000..3696bdca3b2e8 --- /dev/null +++ b/src/wp-includes/blocks/video/index.php @@ -0,0 +1,91 @@ + 0 && $metadata['height'] > 0 ) + ) { + return $content; + } + + // Locate the VIDEO tag to add the dimensions. + $p = new WP_HTML_Tag_Processor( $content ); + if ( ! $p->next_tag( array( 'tag_name' => 'VIDEO' ) ) ) { + return $content; + } + + $p->set_attribute( 'width', (string) $metadata['width'] ); + $p->set_attribute( 'height', (string) $metadata['height'] ); + + /* + * The aspect-ratio style is needed due to an issue with the CSS spec: . + * Note that a style rule using attr() like the following cannot currently be used: + * + * .wp-block-video video[width][height] { + * aspect-ratio: attr(width type()) / attr(height type()); + * } + * + * This is because this attr() is yet only implemented in Chromium: . + */ + $style = $p->get_attribute( 'style' ); + if ( ! is_string( $style ) ) { + $style = ''; + } + $aspect_ratio_style = sprintf( 'aspect-ratio: %d / %d;', $metadata['width'], $metadata['height'] ); + $p->set_attribute( 'style', $aspect_ratio_style . $style ); + + return $p->get_updated_html(); +} + +/** + * Registers the `core/video` block on server. + * + * @since 6.9.0 + */ +function register_block_core_video(): void { + register_block_type_from_metadata( + __DIR__ . '/video', + array( + 'render_callback' => 'render_block_core_video', + ) + ); +} +add_action( 'init', 'register_block_core_video' ); diff --git a/src/wp-includes/blocks/widget-group/index.php b/src/wp-includes/blocks/widget-group/index.php new file mode 100644 index 0000000000000..e8769612a2f17 --- /dev/null +++ b/src/wp-includes/blocks/widget-group/index.php @@ -0,0 +1,93 @@ +'; + $after_title = ''; + } + + $html = ''; + + if ( ! empty( $attributes['title'] ) ) { + $html .= $before_title . esc_html( $attributes['title'] ) . $after_title; + } + + $html .= '
      '; + foreach ( $block->inner_blocks as $inner_block ) { + $html .= $inner_block->render(); + } + $html .= '
      '; + + return $html; +} + +/** + * Registers the 'core/widget-group' block. + * + * @since 5.9.0 + */ +function register_block_core_widget_group() { + register_block_type_from_metadata( + __DIR__ . '/widget-group', + array( + 'render_callback' => 'render_block_core_widget_group', + ) + ); +} + +add_action( 'init', 'register_block_core_widget_group' ); + +/** + * Make a note of the sidebar being rendered before WordPress starts rendering + * it. This lets us get to the current sidebar in + * render_block_core_widget_group(). + * + * @since 5.9.0 + * + * @global int|string $_sidebar_being_rendered + * + * @param int|string $index Index, name, or ID of the dynamic sidebar. + */ +function note_sidebar_being_rendered( $index ) { + global $_sidebar_being_rendered; + $_sidebar_being_rendered = $index; +} +add_action( 'dynamic_sidebar_before', 'note_sidebar_being_rendered' ); + +/** + * Clear whatever we set in note_sidebar_being_rendered() after WordPress + * finishes rendering a sidebar. + * + * @since 5.9.0 + * + * @global int|string $_sidebar_being_rendered + */ +function discard_sidebar_being_rendered() { + global $_sidebar_being_rendered; + unset( $_sidebar_being_rendered ); +} +add_action( 'dynamic_sidebar_after', 'discard_sidebar_being_rendered' ); diff --git a/src/wp-includes/build/pages/site-editor-v2/loader.js b/src/wp-includes/build/pages/site-editor-v2/loader.js new file mode 100644 index 0000000000000..9f7e5db19d51d --- /dev/null +++ b/src/wp-includes/build/pages/site-editor-v2/loader.js @@ -0,0 +1 @@ +// Empty module loader for page dependencies diff --git a/src/wp-includes/build/pages/site-editor-v2/page-wp-admin.php b/src/wp-includes/build/pages/site-editor-v2/page-wp-admin.php new file mode 100644 index 0000000000000..6c70db947820f --- /dev/null +++ b/src/wp-includes/build/pages/site-editor-v2/page-wp-admin.php @@ -0,0 +1,292 @@ + $path ); + if ( ! empty( $content_module ) ) { + $route['content_module'] = $content_module; + } + if ( ! empty( $route_module ) ) { + $route['route_module'] = $route_module; + } + + $wp_site_editor_v2_wp_admin_routes[] = $route; + } +} + +if ( ! function_exists( 'wp_register_site_editor_v2_wp_admin_menu_item' ) ) { + /** + * Register a menu item for the site-editor-v2-wp-admin page. + * Note: Menu items are registered but not displayed in single-page mode. + * + * @param string $id Menu item ID. + * @param string $label Display label. + * @param string $to Route path to navigate to. + * @param string $parent_id Optional. Parent menu item ID. + */ + function wp_register_site_editor_v2_wp_admin_menu_item( $id, $label, $to, $parent_id = '' ) { + global $wp_site_editor_v2_wp_admin_menu_items; + + $menu_item = array( + 'id' => $id, + 'label' => $label, + 'to' => $to, + ); + + if ( ! empty( $parent_id ) ) { + $menu_item['parent'] = $parent_id; + } + + $wp_site_editor_v2_wp_admin_menu_items[] = $menu_item; + } +} + +if ( ! function_exists( 'wp_get_site_editor_v2_wp_admin_routes' ) ) { + /** + * Get all registered routes for the site-editor-v2-wp-admin page. + * + * @return array Array of route objects. + */ + function wp_get_site_editor_v2_wp_admin_routes() { + global $wp_site_editor_v2_wp_admin_routes; + return $wp_site_editor_v2_wp_admin_routes ?? array(); + } +} + +if ( ! function_exists( 'wp_get_site_editor_v2_wp_admin_menu_items' ) ) { + /** + * Get all registered menu items for the site-editor-v2-wp-admin page. + * + * @return array Array of menu item objects. + */ + function wp_get_site_editor_v2_wp_admin_menu_items() { + global $wp_site_editor_v2_wp_admin_menu_items; + return $wp_site_editor_v2_wp_admin_menu_items ?? array(); + } +} + +if ( ! function_exists( 'wp_site_editor_v2_wp_admin_preload_data' ) ) { + /** + * Preload REST API data for the site-editor-v2-wp-admin page. + * Automatically called during page rendering. + */ + function wp_site_editor_v2_wp_admin_preload_data() { + // Define paths to preload - same for all pages + $preload_paths = array( + '/?_fields=description,gmt_offset,home,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' ), + ); + + // Use rest_preload_api_request to gather the preloaded data + $preload_data = array_reduce( + $preload_paths, + 'rest_preload_api_request', + array() + ); + + // Register the preloading middleware with wp-api-fetch + wp_add_inline_script( + 'wp-api-fetch', + sprintf( + 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', + wp_json_encode( $preload_data ) + ), + 'after' + ); + } +} + +if ( ! function_exists( 'wp_site_editor_v2_wp_admin_enqueue_scripts' ) ) { + /** + * Enqueue scripts and styles for the site-editor-v2-wp-admin page. + * Hooked to admin_enqueue_scripts. + * + * @param string $hook_suffix The current admin page. + */ + function wp_site_editor_v2_wp_admin_enqueue_scripts( $hook_suffix ) { + // Check all possible ways this page can be accessed: + // 1. Menu page via admin.php?page=site-editor-v2-wp-admin (plugin) + // 2. Direct file via site-editor-v2.php (Core) - screen ID will be 'site-editor-v2' + $current_screen = get_current_screen(); + $is_our_page = ( + ( isset( $_GET['page'] ) && 'site-editor-v2-wp-admin' === $_GET['page'] ) || // phpcs:ignore WordPress.Security.NonceVerification.Recommended + ( $current_screen && 'site-editor-v2' === $current_screen->id ) + ); + + if ( ! $is_our_page ) { + return; + } + + // Load build constants + $build_constants = require __DIR__ . '/../../constants.php'; + + // Fire init action for extensions to register routes and menu items + do_action( 'site-editor-v2-wp-admin_init' ); + + // Preload REST API data + wp_site_editor_v2_wp_admin_preload_data(); + + // Get all registered routes + $routes = wp_get_site_editor_v2_wp_admin_routes(); + + // Get boot module asset file for dependencies + $asset_file = ABSPATH . WPINC . '/js/dist/script-modules/boot/index.min.asset.php'; + if ( file_exists( $asset_file ) ) { + $asset = require $asset_file; + + // This script serves two purposes: + // 1. It ensures all the globals that are made available to the modules are loaded. + // 2. It initializes the boot module as an inline script. + wp_register_script( 'site-editor-v2-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true ); + + // Add inline script to initialize the app using initSinglePage (no menuItems) + wp_add_inline_script( + 'site-editor-v2-wp-admin-prerequisites', + sprintf( + 'import("@wordpress/boot").then(mod => mod.initSinglePage({mountId: "%s", routes: %s}));', + 'site-editor-v2-wp-admin-app', + wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) + ) + ); + + // Register prerequisites style by filtering script dependencies to find registered styles + $style_dependencies = array_filter( + $asset['dependencies'], + function ( $handle ) { + return wp_style_is( $handle, 'registered' ); + } + ); + wp_register_style( 'site-editor-v2-wp-admin-prerequisites', false, $style_dependencies, $asset['version'] ); + + // Build dependencies for site-editor-v2-wp-admin module + $boot_dependencies = array( + array( + 'import' => 'static', + 'id' => '@wordpress/boot', + ), + ); + + // Add all registered routes as dependencies + foreach ( $routes as $route ) { + if ( isset( $route['route_module'] ) ) { + $boot_dependencies[] = array( + 'import' => 'static', + 'id' => $route['route_module'], + ); + } + if ( isset( $route['content_module'] ) ) { + $boot_dependencies[] = array( + 'import' => 'dynamic', + 'id' => $route['content_module'], + ); + } + } + + // Dummy script module to ensure dependencies are loaded + wp_register_script_module( + 'site-editor-v2-wp-admin', + $build_constants['build_url'] . 'pages/site-editor-v2/loader.js', + $boot_dependencies + ); + + // Enqueue the boot scripts and styles + wp_enqueue_script( 'site-editor-v2-wp-admin-prerequisites' ); + wp_enqueue_script_module( 'site-editor-v2-wp-admin' ); + wp_enqueue_style( 'site-editor-v2-wp-admin-prerequisites' ); + } + } +} + +if ( ! function_exists( 'wp_site_editor_v2_wp_admin_render_page' ) ) { + /** + * Render the site-editor-v2-wp-admin page. + * Call this function from add_menu_page or add_submenu_page. + * This renders within the normal WordPress admin interface. + */ + function wp_site_editor_v2_wp_admin_render_page() { + ?> + +
      + $path ); + if ( ! empty( $content_module ) ) { + $route['content_module'] = $content_module; + } + if ( ! empty( $route_module ) ) { + $route['route_module'] = $route_module; + } + + $wp_site_editor_v2_routes[] = $route; + } +} + +if ( ! function_exists( 'wp_register_site_editor_v2_menu_item' ) ) { + /** + * Register a menu item for the site-editor-v2 page. + * + * @param string $id Menu item ID. + * @param string $label Display label. + * @param string $to Route path to navigate to. + * @param string $parent_id Optional. Parent menu item ID. + * @param string $parent_type Optional. Parent type: 'drilldown' or 'dropdown'. + */ + function wp_register_site_editor_v2_menu_item( $id, $label, $to, $parent_id = '', $parent_type = '' ) { + global $wp_site_editor_v2_menu_items; + + $menu_item = array( + 'id' => $id, + 'label' => $label, + 'to' => $to, + ); + + if ( ! empty( $parent_id ) ) { + $menu_item['parent'] = $parent_id; + } + + if ( ! empty( $parent_type ) && in_array( $parent_type, array( 'drilldown', 'dropdown' ), true ) ) { + $menu_item['parent_type'] = $parent_type; + } + + $wp_site_editor_v2_menu_items[] = $menu_item; + } +} + +if ( ! function_exists( 'wp_get_site_editor_v2_routes' ) ) { + /** + * Get all registered routes for the site-editor-v2 page. + * + * @return array Array of route objects. + */ + function wp_get_site_editor_v2_routes() { + global $wp_site_editor_v2_routes; + return $wp_site_editor_v2_routes ?? array(); + } +} + +if ( ! function_exists( 'wp_get_site_editor_v2_menu_items' ) ) { + /** + * Get all registered menu items for the site-editor-v2 page. + * + * @return array Array of menu item objects. + */ + function wp_get_site_editor_v2_menu_items() { + global $wp_site_editor_v2_menu_items; + return $wp_site_editor_v2_menu_items ?? array(); + } +} + +if ( ! function_exists( 'wp_site_editor_v2_preload_data' ) ) { + /** + * Preload REST API data for the site-editor-v2 page. + * Automatically called during page rendering. + */ + function wp_site_editor_v2_preload_data() { + // Define paths to preload - same for all pages + $preload_paths = array( + '/?_fields=description,gmt_offset,home,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' ), + ); + + // Use rest_preload_api_request to gather the preloaded data + $preload_data = array_reduce( + $preload_paths, + 'rest_preload_api_request', + array() + ); + + // Register the preloading middleware with wp-api-fetch + wp_add_inline_script( + 'wp-api-fetch', + sprintf( + 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', + wp_json_encode( $preload_data ) + ), + 'after' + ); + } +} + +if ( ! function_exists( 'wp_site_editor_v2_render_page' ) ) { + /** + * Render the site-editor-v2 page. + * Call this function from add_menu_page or add_submenu_page. + */ + function wp_site_editor_v2_render_page() { + // Load build constants + $build_constants = require __DIR__ . '/../../constants.php'; + + // Set current screen + set_current_screen(); + + // Remove unwanted deprecated handler + remove_action( 'admin_head', 'wp_admin_bar_header' ); + + // Remove unwanted scripts and styles that were enqueued during `admin_init` + foreach ( wp_scripts()->queue as $script ) { + wp_dequeue_script( $script ); + } + foreach ( wp_styles()->queue as $style ) { + wp_dequeue_style( $style ); + } + + // Fire init action for extensions to register routes and menu items + do_action( 'site-editor-v2_init' ); + + // Enqueue command palette assets for boot-based pages + if ( function_exists( 'wp_enqueue_command_palette_assets' ) ) { + wp_enqueue_command_palette_assets(); + } + + // Preload REST API data + wp_site_editor_v2_preload_data(); + + // Get all registered routes and menu items + $menu_items = wp_get_site_editor_v2_menu_items(); + $routes = wp_get_site_editor_v2_routes(); + + // Get boot module asset file for dependencies + $asset_file = ABSPATH . WPINC . '/js/dist/script-modules/boot/index.min.asset.php'; + if ( file_exists( $asset_file ) ) { + $asset = require $asset_file; + + // This script serves two purposes: + // 1. It ensures all the globals that are made available to the modules are loaded. + // 2. It initializes the boot module as an inline script. + wp_register_script( 'site-editor-v2-prerequisites', '', $asset['dependencies'], $asset['version'], true ); + + // Add inline script to initialize the app + $init_modules = ["@wordpress/edit-site-init"]; + wp_add_inline_script( + 'site-editor-v2-prerequisites', + sprintf( + 'import("@wordpress/boot").then(mod => mod.init({mountId: "%s", menuItems: %s, routes: %s, initModules: %s, dashboardLink: "%s"}));', + 'site-editor-v2-app', + wp_json_encode( $menu_items, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), + wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), + wp_json_encode( $init_modules, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), + esc_url( admin_url( '/' ) ) + ) + ); + + // Register prerequisites style by filtering script dependencies to find registered styles + $style_dependencies = array_filter( + $asset['dependencies'], + function ( $handle ) { + return wp_style_is( $handle, 'registered' ); + } + ); + wp_register_style( 'site-editor-v2-prerequisites', false, $style_dependencies, $asset['version'] ); + + // Build dependencies for site-editor-v2 module + $boot_dependencies = array( + array( + 'import' => 'static', + 'id' => '@wordpress/boot', + ), + ); + + // Add init modules as static dependencies + $boot_dependencies[] = array( 'import' => 'static', 'id' => '@wordpress/edit-site-init' ); + + // Add all registered routes as dependencies + foreach ( $routes as $route ) { + if ( isset( $route['route_module'] ) ) { + $boot_dependencies[] = array( + 'import' => 'static', + 'id' => $route['route_module'], + ); + } + if ( isset( $route['content_module'] ) ) { + $boot_dependencies[] = array( + 'import' => 'dynamic', + 'id' => $route['content_module'], + ); + } + } + + // Dummy script module to ensure dependencies are loaded + wp_register_script_module( + 'site-editor-v2', + $build_constants['build_url'] . 'pages/site-editor-v2/loader.js', + $boot_dependencies + ); + + // Enqueue the boot scripts and styles + wp_enqueue_script( 'site-editor-v2-prerequisites' ); + wp_enqueue_script_module( 'site-editor-v2' ); + wp_enqueue_style( 'site-editor-v2-prerequisites' ); + } + + // Output the HTML + ?> + + > + + + + <?php echo esc_html( get_admin_page_title() ); ?> + + + + +
      + print_import_map(); + print_footer_scripts(); + wp_script_modules()->print_enqueued_script_modules(); + 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 + */ + do_action( "admin_footer-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores + // END see wp-admin/admin-footer.php + ?> + + + function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/home/route.ts +var import_i18n = __toESM(require_i18n()); +var route = { + title: () => (0, import_i18n.__)("Home"), + async canvas() { + return { + isPreview: true + }; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/home/route.min.asset.php b/src/wp-includes/build/routes/home/route.min.asset.php new file mode 100644 index 0000000000000..2e5b539a89cf1 --- /dev/null +++ b/src/wp-includes/build/routes/home/route.min.asset.php @@ -0,0 +1 @@ + array('wp-i18n'), 'version' => 'fe372a97c63e869a6bdb'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/home/route.min.js b/src/wp-includes/build/routes/home/route.min.js new file mode 100644 index 0000000000000..133c29e4564bb --- /dev/null +++ b/src/wp-includes/build/routes/home/route.min.js @@ -0,0 +1 @@ +var a=Object.create;var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var x=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var _=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of m(e))!v.call(r,o)&&o!==t&&n(r,o,{get:()=>e[o],enumerable:!(i=c(e,o))||i.enumerable});return r};var d=(r,e,t)=>(t=r!=null?a(u(r)):{},_(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r));var p=x((l,s)=>{s.exports=window.wp.i18n});var w=d(p()),y={title:()=>(0,w.__)("Home"),async canvas(){return{isPreview:!0}}};export{y as route}; diff --git a/src/wp-includes/build/routes/navigation-edit/content.js b/src/wp-includes/build/routes/navigation-edit/content.js new file mode 100644 index 0000000000000..72e813c7ca5b6 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/content.js @@ -0,0 +1,526 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/html-entities +var require_html_entities = __commonJS({ + "package-external:@wordpress/html-entities"(exports, module) { + module.exports = window.wp.htmlEntities; + } +}); + +// package-external:@wordpress/block-editor +var require_block_editor = __commonJS({ + "package-external:@wordpress/block-editor"(exports, module) { + module.exports = window.wp.blockEditor; + } +}); + +// package-external:@wordpress/blocks +var require_blocks = __commonJS({ + "package-external:@wordpress/blocks"(exports, module) { + module.exports = window.wp.blocks; + } +}); + +// package-external:@wordpress/private-apis +var require_private_apis = __commonJS({ + "package-external:@wordpress/private-apis"(exports, module) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/primitives +var require_primitives = __commonJS({ + "package-external:@wordpress/primitives"(exports, module) { + module.exports = window.wp.primitives; + } +}); + +// routes/navigation-edit/stage.tsx +import { useParams } from "@wordpress/route"; + +// packages/admin-ui/build-module/breadcrumbs/index.mjs +var import_i18n = __toESM(require_i18n(), 1); +var import_components = __toESM(require_components(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +import { Link } from "@wordpress/route"; +var BreadcrumbItem = ({ + item: { label, to } +}) => { + if (!to) { + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalHeading, { level: 1, truncate: true, children: label }) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, { to, children: label }) }); +}; +var Breadcrumbs = ({ items }) => { + if (!items.length) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", { "aria-label": (0, import_i18n.__)("Breadcrumbs"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( + import_components.__experimentalHStack, + { + as: "ul", + className: "admin-ui-breadcrumbs__list", + spacing: 0, + justify: "flex-start", + alignment: "center", + children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BreadcrumbItem, { item }, index)) + } + ) }); +}; +var breadcrumbs_default = Breadcrumbs; + +// node_modules/clsx/dist/clsx.mjs +function r(e) { + var t, f, n = ""; + if ("string" == typeof e || "number" == typeof e) n += e; + else if ("object" == typeof e) if (Array.isArray(e)) { + var o = e.length; + for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); + } else for (f in e) e[f] && (n && (n += " "), n += f); + return n; +} +function clsx() { + for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); + return n; +} +var clsx_default = clsx; + +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element = __toESM(require_element(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element.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/header.mjs +var import_components3 = __toESM(require_components(), 1); + +// packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs +var import_components2 = __toESM(require_components(), 1); +var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components2.createSlotFill)("SidebarToggle"); + +// packages/admin-ui/build-module/page/header.mjs +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_components3.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_components3.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_components3.__experimentalHStack, { spacing: 2, justify: "left", 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)(import_components3.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + import_components3.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + 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_runtime4 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + showSidebarToggle = true +}) { + const classes = clsx_default("admin-ui-page", className); + return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/navigation-edit/stage.tsx +var import_data3 = __toESM(require_data()); +var import_core_data2 = __toESM(require_core_data()); +var import_i18n3 = __toESM(require_i18n()); +var import_html_entities = __toESM(require_html_entities()); + +// routes/navigation-edit/editor/index.tsx +var import_element3 = __toESM(require_element()); +var import_block_editor3 = __toESM(require_block_editor()); +var import_blocks2 = __toESM(require_blocks()); +var import_components5 = __toESM(require_components()); +import { useEditorAssets } from "@wordpress/lazy-editor"; + +// routes/navigation-edit/editor/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='023c02af3d']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "023c02af3d"); + style.appendChild(document.createTextNode(".navigation-edit-editor__hidden-blocks{display:none}")); + document.head.appendChild(style); +} + +// routes/navigation-edit/editor/content.tsx +var import_block_editor2 = __toESM(require_block_editor()); +var import_data2 = __toESM(require_data()); +var import_blocks = __toESM(require_blocks()); +var import_element2 = __toESM(require_element()); +var import_core_data = __toESM(require_core_data()); + +// 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" +); + +// packages/icons/build-module/library/chevron-down.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives.Path, { d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" }) }); + +// packages/icons/build-module/library/chevron-up.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var chevron_up_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives2.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives2.Path, { d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// routes/navigation-edit/editor/leaf-more-menu.tsx +var import_components4 = __toESM(require_components()); +var import_data = __toESM(require_data()); +var import_i18n2 = __toESM(require_i18n()); +var import_block_editor = __toESM(require_block_editor()); +var POPOVER_PROPS = { + className: "block-editor-block-settings-menu__popover", + placement: "bottom-start" +}; +function LeafMoreMenu({ + block, + ...props +}) { + const { clientId } = block; + const { moveBlocksDown, moveBlocksUp, removeBlocks } = (0, import_data.useDispatch)(import_block_editor.store); + const removeLabel = (0, import_i18n2.sprintf)( + /* translators: %s: block name */ + (0, import_i18n2.__)("Remove %s"), + (0, import_block_editor.BlockTitle)({ clientId, maximumLength: 25 }) + ); + const rootClientId = (0, import_data.useSelect)( + (select) => { + const { getBlockRootClientId } = select(import_block_editor.store); + return getBlockRootClientId(clientId); + }, + [clientId] + ); + return /* @__PURE__ */ React.createElement( + import_components4.DropdownMenu, + { + icon: more_vertical_default, + label: (0, import_i18n2.__)("Options"), + className: "block-editor-block-settings-menu", + popoverProps: POPOVER_PROPS, + noIcons: true, + ...props + }, + ({ onClose }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_components4.MenuGroup, null, /* @__PURE__ */ React.createElement( + import_components4.MenuItem, + { + icon: chevron_up_default, + onClick: () => { + moveBlocksUp([clientId], rootClientId); + onClose(); + } + }, + (0, import_i18n2.__)("Move up") + ), /* @__PURE__ */ React.createElement( + import_components4.MenuItem, + { + icon: chevron_down_default, + onClick: () => { + moveBlocksDown([clientId], rootClientId); + onClose(); + } + }, + (0, import_i18n2.__)("Move down") + )), /* @__PURE__ */ React.createElement(import_components4.MenuGroup, null, /* @__PURE__ */ React.createElement( + import_components4.MenuItem, + { + onClick: () => { + removeBlocks([clientId], false); + onClose(); + } + }, + removeLabel + ))) + ); +} + +// routes/navigation-edit/editor/content.tsx +var { PrivateListView } = unlock(import_block_editor2.privateApis); +var MAX_PAGE_COUNT = 100; +var PAGES_QUERY = [ + "postType", + "page", + { + per_page: MAX_PAGE_COUNT, + _fields: ["id", "link", "menu_order", "parent", "title", "type"], + // TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby + // values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent + // sort. + orderby: "menu_order", + order: "asc" + } +]; +function NavigationMenuContent({ + rootClientId +}) { + const { listViewRootClientId, isLoading } = (0, import_data2.useSelect)( + (select) => { + const { + areInnerBlocksControlled, + getBlockName, + getBlockCount, + getBlockOrder + } = select(import_block_editor2.store); + const { isResolving } = select(import_core_data.store); + const blockClientIds = getBlockOrder(rootClientId); + const hasOnlyPageListBlock = blockClientIds.length === 1 && getBlockName(blockClientIds[0]) === "core/page-list"; + const pageListHasBlocks = hasOnlyPageListBlock && getBlockCount(blockClientIds[0]) > 0; + const isLoadingPages = isResolving( + "getEntityRecords", + PAGES_QUERY + ); + return { + listViewRootClientId: pageListHasBlocks ? blockClientIds[0] : rootClientId, + // This is a small hack to wait for the navigation block + // to actually load its inner blocks. + isLoading: !areInnerBlocksControlled(rootClientId) || isLoadingPages + }; + }, + [rootClientId] + ); + const { replaceBlock, __unstableMarkNextChangeAsNotPersistent } = (0, import_data2.useDispatch)(import_block_editor2.store); + const offCanvasOnselect = (0, import_element2.useCallback)( + (block) => { + if (block.name === "core/navigation-link" && !block.attributes.url) { + __unstableMarkNextChangeAsNotPersistent(); + replaceBlock( + block.clientId, + (0, import_blocks.createBlock)("core/navigation-link", block.attributes) + ); + } + }, + [__unstableMarkNextChangeAsNotPersistent, replaceBlock] + ); + return /* @__PURE__ */ React.createElement(React.Fragment, null, !isLoading && /* @__PURE__ */ React.createElement( + PrivateListView, + { + rootClientId: listViewRootClientId, + onSelect: offCanvasOnselect, + blockSettingsMenu: LeafMoreMenu, + showAppender: false, + isExpanded: true + } + ), /* @__PURE__ */ React.createElement("div", { className: "navigation-edit-editor__hidden-blocks" }, /* @__PURE__ */ React.createElement(import_block_editor2.BlockList, null))); +} + +// routes/navigation-edit/editor/index.tsx +var noop = () => { +}; +function NavigationMenuEditor({ id }) { + const { isReady: assetsReady } = useEditorAssets(); + const blocks = (0, import_element3.useMemo)(() => { + if (!assetsReady || !id) { + return []; + } + return [(0, import_blocks2.createBlock)("core/navigation", { ref: id })]; + }, [assetsReady, id]); + if (!assetsReady || !blocks.length) { + return /* @__PURE__ */ React.createElement( + "div", + { + style: { + display: "flex", + justifyContent: "center", + alignItems: "center", + height: "100vh" + } + }, + /* @__PURE__ */ React.createElement(import_components5.Spinner, null) + ); + } + return /* @__PURE__ */ React.createElement( + import_block_editor3.BlockEditorProvider, + { + settings: {}, + value: blocks, + onChange: noop, + onInput: noop + }, + /* @__PURE__ */ React.createElement(NavigationMenuContent, { rootClientId: blocks[0].clientId }) + ); +} + +// routes/navigation-edit/stage.tsx +var NAVIGATION_POST_TYPE = "wp_navigation"; +function NavigationEditStage() { + const { id } = useParams({ from: "/navigation/edit/$id" }); + const navigationId = parseInt(id); + const { navigationMenu } = (0, import_data3.useSelect)( + (select) => { + const { getEntityRecord } = select(import_core_data2.store); + return { + navigationMenu: getEntityRecord( + "postType", + NAVIGATION_POST_TYPE, + navigationId + ) + }; + }, + [navigationId] + ); + if (!navigationMenu) { + return; + } + const menuTitle = navigationMenu.title?.rendered || navigationMenu.title?.raw || ""; + return /* @__PURE__ */ React.createElement( + page_default, + { + breadcrumbs: /* @__PURE__ */ React.createElement( + breadcrumbs_default, + { + items: [ + { + label: (0, import_i18n3.__)("Navigation"), + to: "/navigation/list" + }, + { + label: (0, import_html_entities.decodeEntities)(menuTitle) + } + ] + } + ), + hasPadding: true + }, + /* @__PURE__ */ React.createElement(NavigationMenuEditor, { id: navigationId }) + ); +} +var stage = NavigationEditStage; +export { + stage +}; diff --git a/src/wp-includes/build/routes/navigation-edit/content.min.asset.php b/src/wp-includes/build/routes/navigation-edit/content.min.asset.php new file mode 100644 index 0000000000000..f77b214280d62 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/content.min.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-primitives', 'wp-private-apis'), 'module_dependencies' => array(array('id' => '@wordpress/lazy-editor', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '2ac675a034ba1ca620ad'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/navigation-edit/content.min.js b/src/wp-includes/build/routes/navigation-edit/content.min.js new file mode 100644 index 0000000000000..361836931f369 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/content.min.js @@ -0,0 +1 @@ +var Da=Object.create;var X=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var Oa=Object.getOwnPropertyNames;var Ua=Object.getPrototypeOf,Ha=Object.prototype.hasOwnProperty;var d=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports);var Fa=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of Oa(t))!Ha.call(a,f)&&f!==e&&X(a,f,{get:()=>t[f],enumerable:!(r=Va(t,f))||r.enumerable});return a};var o=(a,t,e)=>(e=a!=null?Da(Ua(a)):{},Fa(t||!a||!a.__esModule?X(e,"default",{value:a,enumerable:!0}):e,a));var _=d((rt,Y)=>{Y.exports=window.wp.i18n});var w=d((ft,Q)=>{Q.exports=window.wp.components});var p=d((lt,$)=>{$.exports=window.ReactJSXRuntime});var R=d((ut,aa)=>{aa.exports=window.wp.element});var B=d((Lt,ua)=>{ua.exports=window.wp.data});var D=d((St,ia)=>{ia.exports=window.wp.coreData});var na=d((Rt,pa)=>{pa.exports=window.wp.htmlEntities});var C=d((Bt,ca)=>{ca.exports=window.wp.blockEditor});var V=d((Ct,ga)=>{ga.exports=window.wp.blocks});var va=d((Pt,ha)=>{ha.exports=window.wp.privateApis});var P=d((Tt,ka)=>{ka.exports=window.wp.primitives});import{useParams as Ka}from"@wordpress/route";var K=o(_(),1),L=o(w(),1),n=o(p(),1);import{Link as za}from"@wordpress/route";var Ga=({item:{label:a,to:t}})=>t?(0,n.jsx)("li",{children:(0,n.jsx)(za,{to:t,children:a})}):(0,n.jsx)("li",{children:(0,n.jsx)(L.__experimentalHeading,{level:1,truncate:!0,children:a})}),qa=({items:a})=>a.length?(0,n.jsx)("nav",{"aria-label":(0,K.__)("Breadcrumbs"),children:(0,n.jsx)(L.__experimentalHStack,{as:"ul",className:"admin-ui-breadcrumbs__list",spacing:0,justify:"flex-start",alignment:"center",children:a.map((t,e)=>(0,n.jsx)(Ga,{item:t},e))})}):null,E=qa;function Z(a){var t,e,r="";if(typeof a=="string"||typeof a=="number")r+=a;else if(typeof a=="object")if(Array.isArray(a)){var f=a.length;for(t=0;t(0,ea.jsx)(r,{ref:l,className:S("admin-ui-navigable-region",t),"aria-label":e,role:"region",tabIndex:"-1",...f,children:a}));oa.displayName="NavigableRegion";var ra=oa;var c=o(w(),1);var fa=o(w(),1),{Fill:la,Slot:sa}=(0,fa.createSlotFill)("SidebarToggle");var u=o(p(),1);function da({breadcrumbs:a,badges:t,title:e,subTitle:r,actions:f,showSidebarToggle:l=!0}){return(0,u.jsxs)(c.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,u.jsxs)(c.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,u.jsxs)(c.__experimentalHStack,{spacing:2,justify:"left",children:[l&&(0,u.jsx)(sa,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),e&&(0,u.jsx)(c.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:e}),a,t]}),(0,u.jsx)(c.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:f})]}),r&&(0,u.jsx)("p",{className:"admin-ui-page__header-subtitle",children:r})]})}var k=o(p(),1);function ma({breadcrumbs:a,badges:t,title:e,subTitle:r,children:f,className:l,actions:s,hasPadding:v=!1,showSidebarToggle:m=!0}){let b=S("admin-ui-page",l);return(0,k.jsxs)(ra,{className:b,ariaLabel:e,children:[(e||a||t)&&(0,k.jsx)(da,{breadcrumbs:a,badges:t,title:e,subTitle:r,actions:s,showSidebarToggle:m}),v?(0,k.jsx)("div",{className:"admin-ui-page__content has-padding",children:f}):f]})}ma.SidebarToggleFill=la;var j=ma;var Pa=o(B()),Na=o(D()),Ia=o(_()),Ta=o(na());var Sa=o(R()),Ra=o(C()),Ba=o(V()),Ca=o(w());import{useEditorAssets as $a}from"@wordpress/lazy-editor";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='023c02af3d']")){let a=document.createElement("style");a.setAttribute("data-wp-hash","023c02af3d"),a.appendChild(document.createTextNode(".navigation-edit-editor__hidden-blocks{display:none}")),document.head.appendChild(a)}var h=o(C()),A=o(B()),xa=o(V()),ya=o(R()),_a=o(D());var wa=o(va()),{lock:Nt,unlock:ba}=(0,wa.__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 N=o(P(),1),O=o(p(),1),U=(0,O.jsx)(N.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,O.jsx)(N.Path,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})});var I=o(P(),1),H=o(p(),1),F=(0,H.jsx)(I.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,H.jsx)(I.Path,{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})});var T=o(P(),1),z=o(p(),1),G=(0,z.jsx)(T.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,z.jsx)(T.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var i=o(w()),M=o(B()),g=o(_()),x=o(C()),Ja={className:"block-editor-block-settings-menu__popover",placement:"bottom-start"};function q({block:a,...t}){let{clientId:e}=a,{moveBlocksDown:r,moveBlocksUp:f,removeBlocks:l}=(0,M.useDispatch)(x.store),s=(0,g.sprintf)((0,g.__)("Remove %s"),(0,x.BlockTitle)({clientId:e,maximumLength:25})),v=(0,M.useSelect)(m=>{let{getBlockRootClientId:b}=m(x.store);return b(e)},[e]);return React.createElement(i.DropdownMenu,{icon:G,label:(0,g.__)("Options"),className:"block-editor-block-settings-menu",popoverProps:Ja,noIcons:!0,...t},({onClose:m})=>React.createElement(React.Fragment,null,React.createElement(i.MenuGroup,null,React.createElement(i.MenuItem,{icon:F,onClick:()=>{f([e],v),m()}},(0,g.__)("Move up")),React.createElement(i.MenuItem,{icon:U,onClick:()=>{r([e],v),m()}},(0,g.__)("Move down"))),React.createElement(i.MenuGroup,null,React.createElement(i.MenuItem,{onClick:()=>{l([e],!1),m()}},s))))}var{PrivateListView:Xa}=ba(h.privateApis),Ya=100,Qa=["postType","page",{per_page:Ya,_fields:["id","link","menu_order","parent","title","type"],orderby:"menu_order",order:"asc"}];function W({rootClientId:a}){let{listViewRootClientId:t,isLoading:e}=(0,A.useSelect)(s=>{let{areInnerBlocksControlled:v,getBlockName:m,getBlockCount:b,getBlockOrder:Ma}=s(h.store),{isResolving:Aa}=s(_a.store),y=Ma(a),Ea=y.length===1&&m(y[0])==="core/page-list"&&b(y[0])>0,ja=Aa("getEntityRecords",Qa);return{listViewRootClientId:Ea?y[0]:a,isLoading:!v(a)||ja}},[a]),{replaceBlock:r,__unstableMarkNextChangeAsNotPersistent:f}=(0,A.useDispatch)(h.store),l=(0,ya.useCallback)(s=>{s.name==="core/navigation-link"&&!s.attributes.url&&(f(),r(s.clientId,(0,xa.createBlock)("core/navigation-link",s.attributes)))},[f,r]);return React.createElement(React.Fragment,null,!e&&React.createElement(Xa,{rootClientId:t,onSelect:l,blockSettingsMenu:q,showAppender:!1,isExpanded:!0}),React.createElement("div",{className:"navigation-edit-editor__hidden-blocks"},React.createElement(h.BlockList,null)))}var La=()=>{};function J({id:a}){let{isReady:t}=$a(),e=(0,Sa.useMemo)(()=>!t||!a?[]:[(0,Ba.createBlock)("core/navigation",{ref:a})],[t,a]);return!t||!e.length?React.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},React.createElement(Ca.Spinner,null)):React.createElement(Ra.BlockEditorProvider,{settings:{},value:e,onChange:La,onInput:La},React.createElement(W,{rootClientId:e[0].clientId}))}var Za="wp_navigation";function at(){let{id:a}=Ka({from:"/navigation/edit/$id"}),t=parseInt(a),{navigationMenu:e}=(0,Pa.useSelect)(f=>{let{getEntityRecord:l}=f(Na.store);return{navigationMenu:l("postType",Za,t)}},[t]);if(!e)return;let r=e.title?.rendered||e.title?.raw||"";return React.createElement(j,{breadcrumbs:React.createElement(E,{items:[{label:(0,Ia.__)("Navigation"),to:"/navigation/list"},{label:(0,Ta.decodeEntities)(r)}]}),hasPadding:!0},React.createElement(J,{id:t}))}var tt=at;export{tt as stage}; diff --git a/src/wp-includes/build/routes/navigation-edit/route.js b/src/wp-includes/build/routes/navigation-edit/route.js new file mode 100644 index 0000000000000..0c605f9fdc0b6 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/route.js @@ -0,0 +1,121 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/html-entities +var require_html_entities = __commonJS({ + "package-external:@wordpress/html-entities"(exports, module) { + module.exports = window.wp.htmlEntities; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/navigation-edit/route.ts +var import_data = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_html_entities = __toESM(require_html_entities()); +var import_i18n = __toESM(require_i18n()); +import { notFound } from "@wordpress/route"; +var NAVIGATION_POST_TYPE = "wp_navigation"; +var route = { + beforeLoad: async ({ + params + }) => { + const navigationId = parseInt(params.id, 10); + if (Number.isNaN(navigationId)) { + throw notFound(); + } + try { + const navigation = await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecord( + "postType", + NAVIGATION_POST_TYPE, + navigationId + ); + if (!navigation) { + throw notFound(); + } + } catch { + throw notFound(); + } + }, + title: async ({ + params + }) => { + const navigationId = parseInt(params.id); + const navigation = await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecord( + "postType", + NAVIGATION_POST_TYPE, + navigationId + ); + if (navigation?.title?.rendered) { + return (0, import_html_entities.decodeEntities)(navigation.title.rendered); + } + return (0, import_i18n.__)("Navigation"); + }, + canvas: async ({ + params + }) => { + const postId = parseInt(params.id); + return { + postType: NAVIGATION_POST_TYPE, + postId, + isPreview: true, + editLink: `/types/wp_navigation/edit/${postId}` + }; + }, + loader: async ({ + params + }) => { + const navigationId = parseInt(params.id); + await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecord( + "postType", + NAVIGATION_POST_TYPE, + navigationId + ); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/navigation-edit/route.min.asset.php b/src/wp-includes/build/routes/navigation-edit/route.min.asset.php new file mode 100644 index 0000000000000..4cc0ab10ba7c9 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-html-entities', 'wp-i18n'), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '30e98737087f40891445'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/navigation-edit/route.min.js b/src/wp-includes/build/routes/navigation-edit/route.min.js new file mode 100644 index 0000000000000..520b91cfc51b4 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-edit/route.min.js @@ -0,0 +1 @@ +var N=Object.create;var w=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var r=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var R=(i,t,o,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of h(t))!P.call(i,n)&&n!==o&&w(i,n,{get:()=>t[n],enumerable:!(c=_(t,n))||c.enumerable});return i};var e=(i,t,o)=>(o=i!=null?N(x(i)):{},R(t||!i||!i.__esModule?w(o,"default",{value:i,enumerable:!0}):o,i));var m=r((b,g)=>{g.exports=window.wp.data});var v=r((A,y)=>{y.exports=window.wp.coreData});var f=r((L,I)=>{I.exports=window.wp.htmlEntities});var u=r((O,l)=>{l.exports=window.wp.i18n});var s=e(m()),p=e(v()),T=e(f()),E=e(u());import{notFound as d}from"@wordpress/route";var a="wp_navigation",D={beforeLoad:async({params:i})=>{let t=parseInt(i.id,10);if(Number.isNaN(t))throw d();try{if(!await(0,s.resolveSelect)(p.store).getEntityRecord("postType",a,t))throw d()}catch{throw d()}},title:async({params:i})=>{let t=parseInt(i.id),o=await(0,s.resolveSelect)(p.store).getEntityRecord("postType",a,t);return o?.title?.rendered?(0,T.decodeEntities)(o.title.rendered):(0,E.__)("Navigation")},canvas:async({params:i})=>{let t=parseInt(i.id);return{postType:a,postId:t,isPreview:!0,editLink:`/types/wp_navigation/edit/${t}`}},loader:async({params:i})=>{let t=parseInt(i.id);await(0,s.resolveSelect)(p.store).getEntityRecord("postType",a,t)}};export{D as route}; diff --git a/src/wp-includes/build/routes/navigation-list/content.js b/src/wp-includes/build/routes/navigation-list/content.js new file mode 100644 index 0000000000000..eb5dff328dc38 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/content.js @@ -0,0 +1,17114 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// vendor-external:react +var require_react = __commonJS({ + "vendor-external:react"(exports, module) { + module.exports = window.React; + } +}); + +// 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(subscribe2, getSnapshot) { + didWarnOld18Alpha || void 0 === React9.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 = useState24({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect2( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe2, value, getSnapshot] + ); + useEffect17( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe2(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe2] + ); + useDebugValue(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(subscribe2, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React9 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState24 = React9.useState, useEffect17 = React9.useEffect, useLayoutEffect2 = React9.useLayoutEffect, useDebugValue = React9.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 !== React9.useSyncExternalStore ? React9.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(); + } + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/keycodes +var require_keycodes = __commonJS({ + "package-external:@wordpress/keycodes"(exports, module) { + module.exports = window.wp.keycodes; + } +}); + +// node_modules/remove-accents/index.js +var require_remove_accents = __commonJS({ + "node_modules/remove-accents/index.js"(exports, module) { + var characterMap = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\u1EA4": "A", + "\u1EAE": "A", + "\u1EB2": "A", + "\u1EB4": "A", + "\u1EB6": "A", + "\xC6": "AE", + "\u1EA6": "A", + "\u1EB0": "A", + "\u0202": "A", + "\u1EA2": "A", + "\u1EA0": "A", + "\u1EA8": "A", + "\u1EAA": "A", + "\u1EAC": "A", + "\xC7": "C", + "\u1E08": "C", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\u1EBE": "E", + "\u1E16": "E", + "\u1EC0": "E", + "\u1E14": "E", + "\u1E1C": "E", + "\u0206": "E", + "\u1EBA": "E", + "\u1EBC": "E", + "\u1EB8": "E", + "\u1EC2": "E", + "\u1EC4": "E", + "\u1EC6": "E", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\u1E2E": "I", + "\u020A": "I", + "\u1EC8": "I", + "\u1ECA": "I", + "\xD0": "D", + "\xD1": "N", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\u1ED0": "O", + "\u1E4C": "O", + "\u1E52": "O", + "\u020E": "O", + "\u1ECE": "O", + "\u1ECC": "O", + "\u1ED4": "O", + "\u1ED6": "O", + "\u1ED8": "O", + "\u1EDC": "O", + "\u1EDE": "O", + "\u1EE0": "O", + "\u1EDA": "O", + "\u1EE2": "O", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\u1EE6": "U", + "\u1EE4": "U", + "\u1EEC": "U", + "\u1EEE": "U", + "\u1EF0": "U", + "\xDD": "Y", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\u1EA5": "a", + "\u1EAF": "a", + "\u1EB3": "a", + "\u1EB5": "a", + "\u1EB7": "a", + "\xE6": "ae", + "\u1EA7": "a", + "\u1EB1": "a", + "\u0203": "a", + "\u1EA3": "a", + "\u1EA1": "a", + "\u1EA9": "a", + "\u1EAB": "a", + "\u1EAD": "a", + "\xE7": "c", + "\u1E09": "c", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\u1EBF": "e", + "\u1E17": "e", + "\u1EC1": "e", + "\u1E15": "e", + "\u1E1D": "e", + "\u0207": "e", + "\u1EBB": "e", + "\u1EBD": "e", + "\u1EB9": "e", + "\u1EC3": "e", + "\u1EC5": "e", + "\u1EC7": "e", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\u1E2F": "i", + "\u020B": "i", + "\u1EC9": "i", + "\u1ECB": "i", + "\xF0": "d", + "\xF1": "n", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\u1ED1": "o", + "\u1E4D": "o", + "\u1E53": "o", + "\u020F": "o", + "\u1ECF": "o", + "\u1ECD": "o", + "\u1ED5": "o", + "\u1ED7": "o", + "\u1ED9": "o", + "\u1EDD": "o", + "\u1EDF": "o", + "\u1EE1": "o", + "\u1EDB": "o", + "\u1EE3": "o", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\u1EE7": "u", + "\u1EE5": "u", + "\u1EED": "u", + "\u1EEF": "u", + "\u1EF1": "u", + "\xFD": "y", + "\xFF": "y", + "\u0100": "A", + "\u0101": "a", + "\u0102": "A", + "\u0103": "a", + "\u0104": "A", + "\u0105": "a", + "\u0106": "C", + "\u0107": "c", + "\u0108": "C", + "\u0109": "c", + "\u010A": "C", + "\u010B": "c", + "\u010C": "C", + "\u010D": "c", + "C\u0306": "C", + "c\u0306": "c", + "\u010E": "D", + "\u010F": "d", + "\u0110": "D", + "\u0111": "d", + "\u0112": "E", + "\u0113": "e", + "\u0114": "E", + "\u0115": "e", + "\u0116": "E", + "\u0117": "e", + "\u0118": "E", + "\u0119": "e", + "\u011A": "E", + "\u011B": "e", + "\u011C": "G", + "\u01F4": "G", + "\u011D": "g", + "\u01F5": "g", + "\u011E": "G", + "\u011F": "g", + "\u0120": "G", + "\u0121": "g", + "\u0122": "G", + "\u0123": "g", + "\u0124": "H", + "\u0125": "h", + "\u0126": "H", + "\u0127": "h", + "\u1E2A": "H", + "\u1E2B": "h", + "\u0128": "I", + "\u0129": "i", + "\u012A": "I", + "\u012B": "i", + "\u012C": "I", + "\u012D": "i", + "\u012E": "I", + "\u012F": "i", + "\u0130": "I", + "\u0131": "i", + "\u0132": "IJ", + "\u0133": "ij", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u1E30": "K", + "\u1E31": "k", + "K\u0306": "K", + "k\u0306": "k", + "\u0139": "L", + "\u013A": "l", + "\u013B": "L", + "\u013C": "l", + "\u013D": "L", + "\u013E": "l", + "\u013F": "L", + "\u0140": "l", + "\u0141": "l", + "\u0142": "l", + "\u1E3E": "M", + "\u1E3F": "m", + "M\u0306": "M", + "m\u0306": "m", + "\u0143": "N", + "\u0144": "n", + "\u0145": "N", + "\u0146": "n", + "\u0147": "N", + "\u0148": "n", + "\u0149": "n", + "N\u0306": "N", + "n\u0306": "n", + "\u014C": "O", + "\u014D": "o", + "\u014E": "O", + "\u014F": "o", + "\u0150": "O", + "\u0151": "o", + "\u0152": "OE", + "\u0153": "oe", + "P\u0306": "P", + "p\u0306": "p", + "\u0154": "R", + "\u0155": "r", + "\u0156": "R", + "\u0157": "r", + "\u0158": "R", + "\u0159": "r", + "R\u0306": "R", + "r\u0306": "r", + "\u0212": "R", + "\u0213": "r", + "\u015A": "S", + "\u015B": "s", + "\u015C": "S", + "\u015D": "s", + "\u015E": "S", + "\u0218": "S", + "\u0219": "s", + "\u015F": "s", + "\u0160": "S", + "\u0161": "s", + "\u0162": "T", + "\u0163": "t", + "\u021B": "t", + "\u021A": "T", + "\u0164": "T", + "\u0165": "t", + "\u0166": "T", + "\u0167": "t", + "T\u0306": "T", + "t\u0306": "t", + "\u0168": "U", + "\u0169": "u", + "\u016A": "U", + "\u016B": "u", + "\u016C": "U", + "\u016D": "u", + "\u016E": "U", + "\u016F": "u", + "\u0170": "U", + "\u0171": "u", + "\u0172": "U", + "\u0173": "u", + "\u0216": "U", + "\u0217": "u", + "V\u0306": "V", + "v\u0306": "v", + "\u0174": "W", + "\u0175": "w", + "\u1E82": "W", + "\u1E83": "w", + "X\u0306": "X", + "x\u0306": "x", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "Y\u0306": "Y", + "y\u0306": "y", + "\u0179": "Z", + "\u017A": "z", + "\u017B": "Z", + "\u017C": "z", + "\u017D": "Z", + "\u017E": "z", + "\u017F": "s", + "\u0192": "f", + "\u01A0": "O", + "\u01A1": "o", + "\u01AF": "U", + "\u01B0": "u", + "\u01CD": "A", + "\u01CE": "a", + "\u01CF": "I", + "\u01D0": "i", + "\u01D1": "O", + "\u01D2": "o", + "\u01D3": "U", + "\u01D4": "u", + "\u01D5": "U", + "\u01D6": "u", + "\u01D7": "U", + "\u01D8": "u", + "\u01D9": "U", + "\u01DA": "u", + "\u01DB": "U", + "\u01DC": "u", + "\u1EE8": "U", + "\u1EE9": "u", + "\u1E78": "U", + "\u1E79": "u", + "\u01FA": "A", + "\u01FB": "a", + "\u01FC": "AE", + "\u01FD": "ae", + "\u01FE": "O", + "\u01FF": "o", + "\xDE": "TH", + "\xFE": "th", + "\u1E54": "P", + "\u1E55": "p", + "\u1E64": "S", + "\u1E65": "s", + "X\u0301": "X", + "x\u0301": "x", + "\u0403": "\u0413", + "\u0453": "\u0433", + "\u040C": "\u041A", + "\u045C": "\u043A", + "A\u030B": "A", + "a\u030B": "a", + "E\u030B": "E", + "e\u030B": "e", + "I\u030B": "I", + "i\u030B": "i", + "\u01F8": "N", + "\u01F9": "n", + "\u1ED2": "O", + "\u1ED3": "o", + "\u1E50": "O", + "\u1E51": "o", + "\u1EEA": "U", + "\u1EEB": "u", + "\u1E80": "W", + "\u1E81": "w", + "\u1EF2": "Y", + "\u1EF3": "y", + "\u0200": "A", + "\u0201": "a", + "\u0204": "E", + "\u0205": "e", + "\u0208": "I", + "\u0209": "i", + "\u020C": "O", + "\u020D": "o", + "\u0210": "R", + "\u0211": "r", + "\u0214": "U", + "\u0215": "u", + "B\u030C": "B", + "b\u030C": "b", + "\u010C\u0323": "C", + "\u010D\u0323": "c", + "\xCA\u030C": "E", + "\xEA\u030C": "e", + "F\u030C": "F", + "f\u030C": "f", + "\u01E6": "G", + "\u01E7": "g", + "\u021E": "H", + "\u021F": "h", + "J\u030C": "J", + "\u01F0": "j", + "\u01E8": "K", + "\u01E9": "k", + "M\u030C": "M", + "m\u030C": "m", + "P\u030C": "P", + "p\u030C": "p", + "Q\u030C": "Q", + "q\u030C": "q", + "\u0158\u0329": "R", + "\u0159\u0329": "r", + "\u1E66": "S", + "\u1E67": "s", + "V\u030C": "V", + "v\u030C": "v", + "W\u030C": "W", + "w\u030C": "w", + "X\u030C": "X", + "x\u030C": "x", + "Y\u030C": "Y", + "y\u030C": "y", + "A\u0327": "A", + "a\u0327": "a", + "B\u0327": "B", + "b\u0327": "b", + "\u1E10": "D", + "\u1E11": "d", + "\u0228": "E", + "\u0229": "e", + "\u0190\u0327": "E", + "\u025B\u0327": "e", + "\u1E28": "H", + "\u1E29": "h", + "I\u0327": "I", + "i\u0327": "i", + "\u0197\u0327": "I", + "\u0268\u0327": "i", + "M\u0327": "M", + "m\u0327": "m", + "O\u0327": "O", + "o\u0327": "o", + "Q\u0327": "Q", + "q\u0327": "q", + "U\u0327": "U", + "u\u0327": "u", + "X\u0327": "X", + "x\u0327": "x", + "Z\u0327": "Z", + "z\u0327": "z", + "\u0439": "\u0438", + "\u0419": "\u0418", + "\u0451": "\u0435", + "\u0401": "\u0415" + }; + var chars = Object.keys(characterMap).join("|"); + var allAccents = new RegExp(chars, "g"); + var firstAccent = new RegExp(chars, ""); + function matcher(match2) { + return characterMap[match2]; + } + var removeAccents2 = function(string) { + return string.replace(allAccents, matcher); + }; + var hasAccents = function(string) { + return !!string.match(firstAccent); + }; + module.exports = removeAccents2; + module.exports.has = hasAccents; + module.exports.remove = removeAccents2; + } +}); + +// node_modules/fast-deep-equal/es6/index.js +var require_es6 = __commonJS({ + "node_modules/fast-deep-equal/es6/index.js"(exports, module) { + "use strict"; + module.exports = function equal(a2, b2) { + if (a2 === b2) return true; + if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { + if (a2.constructor !== b2.constructor) return false; + var length, i2, keys; + if (Array.isArray(a2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (!equal(a2[i2], b2[i2])) return false; + return true; + } + if (a2 instanceof Map && b2 instanceof Map) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + for (i2 of a2.entries()) + if (!equal(i2[1], b2.get(i2[0]))) return false; + return true; + } + if (a2 instanceof Set && b2 instanceof Set) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + return true; + } + if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (a2[i2] !== b2[i2]) return false; + return true; + } + if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; + if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); + if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) return false; + for (i2 = length; i2-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; + for (i2 = length; i2-- !== 0; ) { + var key = keys[i2]; + if (!equal(a2[key], b2[key])) return false; + } + return true; + } + return a2 !== a2 && b2 !== b2; + }; + } +}); + +// package-external:@wordpress/date +var require_date = __commonJS({ + "package-external:@wordpress/date"(exports, module) { + module.exports = window.wp.date; + } +}); + +// package-external:@wordpress/warning +var require_warning = __commonJS({ + "package-external:@wordpress/warning"(exports, module) { + module.exports = window.wp.warning; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// package-external:@wordpress/notices +var require_notices = __commonJS({ + "package-external:@wordpress/notices"(exports, module) { + module.exports = window.wp.notices; + } +}); + +// routes/navigation-list/stage.tsx +var import_core_data2 = __toESM(require_core_data()); +var import_element57 = __toESM(require_element()); +import { useNavigate as useNavigate3, useSearch } from "@wordpress/route"; + +// node_modules/clsx/dist/clsx.mjs +function r(e2) { + var t2, f2, n2 = ""; + if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; + else if ("object" == typeof e2) if (Array.isArray(e2)) { + var o2 = e2.length; + for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2); + } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); + return n2; +} +function clsx() { + for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2); + return n2; +} +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/admin-ui/build-module/page/header.mjs +var import_components2 = __toESM(require_components(), 1); + +// 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); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { spacing: 2, justify: "left", 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)(import_components2.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + import_components2.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + 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_runtime3 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + 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)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/navigation-list/stage.tsx +var import_i18n45 = __toESM(require_i18n()); + +// node_modules/dequal/dist/index.mjs +var has = Object.prototype.hasOwnProperty; +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + if (foo && bar && (ctor = foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + if (ctor === Array) { + if ((len = foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])) ; + } + return len === -1; + } + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; + } + return len === -1; + } + if (ArrayBuffer.isView(foo)) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]) ; + } + return len === -1; + } + if (!ctor || typeof foo === "object") { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + return foo !== foo && bar !== bar; +} + +// packages/views/build-module/use-view.mjs +var import_element2 = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + const preserved = (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + result = { + ...result, + filters: (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ) + }; + } + if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { + result = { + ...result, + sort: defaultView?.sort + }; + } + return result; +} + +// packages/views/build-module/use-view.mjs +function omit(obj, keys) { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +} +function useView(config) { + const { + kind, + name, + slug, + defaultView, + activeViewOverrides, + queryParams, + onChangeQueryParams + } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data.useSelect)( + (select2) => { + return select2(import_preferences.store).get( + "core/views", + preferenceKey + ); + }, + [preferenceKey] + ); + const { set } = (0, import_data.useDispatch)(import_preferences.store); + const baseView = persistedView ?? defaultView; + const page = Number(queryParams?.page ?? baseView.page ?? 1); + const search = queryParams?.search ?? baseView.search ?? ""; + const view = (0, import_element2.useMemo)(() => { + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); + }, [baseView, page, search, activeViewOverrides, defaultView]); + const isModified = !!persistedView; + const updateView = (0, import_element2.useCallback)( + (newView) => { + const urlParams = { + page: newView?.page, + search: newView?.search + }; + const preferenceView = stripActiveViewOverrides( + omit(newView, ["page", "search"]), + activeViewOverrides, + defaultView + ); + if (onChangeQueryParams && !dequal(urlParams, { page, search })) { + onChangeQueryParams(urlParams); + } + const comparableBaseView = stripActiveViewOverrides( + baseView, + activeViewOverrides, + defaultView + ); + const comparableDefaultView = stripActiveViewOverrides( + defaultView, + activeViewOverrides, + defaultView + ); + if (!dequal(comparableBaseView, preferenceView)) { + if (dequal(preferenceView, comparableDefaultView)) { + set("core/views", preferenceKey, void 0); + } else { + set("core/views", preferenceKey, preferenceView); + } + } + }, + [ + onChangeQueryParams, + page, + search, + baseView, + defaultView, + activeViewOverrides, + set, + preferenceKey + ] + ); + const resetToDefault = (0, import_element2.useCallback)(() => { + set("core/views", preferenceKey, void 0); + }, [preferenceKey, set]); + return { + view, + isModified, + updateView, + resetToDefault + }; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); + +// packages/dataviews/build-module/dataviews/index.mjs +var import_element55 = __toESM(require_element(), 1); +var import_compose12 = __toESM(require_compose(), 1); + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React2 = __toESM(require_react(), 1); +var UNINITIALIZED = {}; +function useRefWithInit(init2, initArg) { + const ref = React2.useRef(UNINITIALIZED); + if (ref.current === UNINITIALIZED) { + ref.current = init2(initArg); + } + return ref; +} + +// node_modules/@base-ui/react/esm/utils/useRenderElement.js +var React5 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useMergedRefs.js +function useMergedRefs(a2, b2, c2, d2) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChange(forkRef, a2, b2, c2, d2)) { + update(forkRef, [a2, b2, c2, d2]); + } + return forkRef.callback; +} +function useMergedRefsN(refs) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChangeN(forkRef, refs)) { + update(forkRef, refs); + } + return forkRef.callback; +} +function createForkRef() { + return { + callback: null, + cleanup: null, + refs: [] + }; +} +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]); +} +function update(forkRef, refs) { + forkRef.refs = refs; + if (refs.every((ref) => ref == null)) { + forkRef.callback = null; + return; + } + forkRef.callback = (instance) => { + if (forkRef.cleanup) { + forkRef.cleanup(); + forkRef.cleanup = null; + } + if (instance != null) { + const cleanupCallbacks = Array(refs.length).fill(null); + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const refCleanup = ref(instance); + if (typeof refCleanup === "function") { + cleanupCallbacks[i2] = refCleanup; + } + break; + } + case "object": { + ref.current = instance; + break; + } + default: + } + } + forkRef.cleanup = () => { + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const cleanupCallback = cleanupCallbacks[i2]; + if (typeof cleanupCallback === "function") { + cleanupCallback(); + } else { + ref(null); + } + break; + } + case "object": { + ref.current = null; + break; + } + default: + } + } + }; + } + }; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +var React4 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/reactVersion.js +var React3 = __toESM(require_react(), 1); +var majorVersion = parseInt(React3.version, 10); +function isReactVersionAtLeast(reactVersionToCheck) { + return majorVersion >= reactVersionToCheck; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +function getReactElementRef(element) { + if (!/* @__PURE__ */ React4.isValidElement(element)) { + return null; + } + const reactElement = element; + const propsWithRef = reactElement.props; + return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; +} + +// node_modules/@base-ui/utils/esm/mergeObjects.js +function mergeObjects(a2, b2) { + if (a2 && !b2) { + return a2; + } + if (!a2 && b2) { + return b2; + } + if (a2 || b2) { + return { + ...a2, + ...b2 + }; + } + return void 0; +} + +// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +function getStateAttributesProps(state, customMapping) { + const props = {}; + for (const key in state) { + const value = state[key]; + if (customMapping?.hasOwnProperty(key)) { + const customProps = customMapping[key](value); + if (customProps != null) { + Object.assign(props, customProps); + } + continue; + } + if (value === true) { + props[`data-${key.toLowerCase()}`] = ""; + } else if (value) { + props[`data-${key.toLowerCase()}`] = value.toString(); + } + } + return props; +} + +// node_modules/@base-ui/react/esm/utils/resolveClassName.js +function resolveClassName(className, state) { + return typeof className === "function" ? className(state) : className; +} + +// node_modules/@base-ui/react/esm/utils/resolveStyle.js +function resolveStyle(style, state) { + return typeof style === "function" ? style(state) : style; +} + +// 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 (b2) { + merged = mergeOne(merged, b2); + } + if (c2) { + merged = mergeOne(merged, c2); + } + if (d2) { + merged = mergeOne(merged, d2); + } + if (e2) { + merged = mergeOne(merged, e2); + } + return merged; +} +function mergePropsN(props) { + if (props.length === 0) { + return EMPTY_PROPS; + } + if (props.length === 1) { + return resolvePropsGetter(props[0], EMPTY_PROPS); + } + let merged = { + ...resolvePropsGetter(props[0], EMPTY_PROPS) + }; + for (let i2 = 1; i2 < props.length; i2 += 1) { + merged = mergeOne(merged, props[i2]); + } + return merged; +} +function mergeOne(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return inputProps(merged); + } + return mutablyMergeInto(merged, inputProps); +} +function mutablyMergeInto(mergedProps, externalProps) { + if (!externalProps) { + return mergedProps; + } + for (const propName in externalProps) { + const externalPropValue = externalProps[propName]; + switch (propName) { + case "style": { + mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); + break; + } + case "className": { + mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); + break; + } + default: { + if (isEventHandler(propName, externalPropValue)) { + mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); + } else { + mergedProps[propName] = externalPropValue; + } + } + } + } + return mergedProps; +} +function isEventHandler(key, value) { + const code0 = key.charCodeAt(0); + const code1 = key.charCodeAt(1); + const code2 = key.charCodeAt(2); + return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); +} +function isPropsGetter(inputProps) { + return typeof inputProps === "function"; +} +function resolvePropsGetter(inputProps, previousProps) { + if (isPropsGetter(inputProps)) { + return inputProps(previousProps); + } + return inputProps ?? EMPTY_PROPS; +} +function mergeEventHandlers(ourHandler, theirHandler) { + if (!theirHandler) { + return ourHandler; + } + if (!ourHandler) { + return theirHandler; + } + return (event) => { + if (isSyntheticEvent(event)) { + const baseUIEvent = event; + makeEventPreventable(baseUIEvent); + const result2 = theirHandler(baseUIEvent); + if (!baseUIEvent.baseUIHandlerPrevented) { + ourHandler?.(baseUIEvent); + } + return result2; + } + const result = theirHandler(event); + ourHandler?.(event); + return result; + }; +} +function makeEventPreventable(event) { + event.preventBaseUIHandler = () => { + event.baseUIHandlerPrevented = true; + }; + return event; +} +function mergeClassNames(ourClassName, theirClassName) { + if (theirClassName) { + if (ourClassName) { + return theirClassName + " " + ourClassName; + } + return theirClassName; + } + return ourClassName; +} +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/useRenderElement.js +var import_react = __toESM(require_react(), 1); +function useRenderElement(element, componentProps, params = {}) { + const renderProp = componentProps.render; + const outProps = useRenderElementProps(componentProps, params); + if (params.enabled === false) { + return null; + } + const state = params.state ?? EMPTY_OBJECT; + return evaluateRenderProp(element, renderProp, outProps, state); +} +function useRenderElementProps(componentProps, params = {}) { + const { + className: classNameProp, + style: styleProp, + render: renderProp + } = componentProps; + const { + state = EMPTY_OBJECT, + ref, + props, + stateAttributesMapping, + 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 outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + if (typeof document !== "undefined") { + if (!enabled) { + useMergedRefs(null, null); + } else if (Array.isArray(ref)) { + outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); + } else { + outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); + } + } + if (!enabled) { + return EMPTY_OBJECT; + } + if (className !== void 0) { + outProps.className = mergeClassNames(outProps.className, className); + } + if (style !== void 0) { + outProps.style = mergeObjects(outProps.style, style); + } + return outProps; +} +function evaluateRenderProp(element, render4, props, state) { + if (render4) { + if (typeof render4 === "function") { + return render4(props, state); + } + const mergedProps = mergeProps(props, render4.props); + mergedProps.ref = props.ref; + return /* @__PURE__ */ React5.cloneElement(render4, 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(8)); +} +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__ */ React5.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// 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']")) { + 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}}")); + document.head.appendChild(style); +} +var style_default = { "stack": "_19ce0419607e1896__stack" }; +var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && `var(--wpds-dimension-gap-${gap})`, + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render: render4, + ref, + props: mergeProps(props, { style, className: style_default.stack }) + }); + return element; +}); + +// packages/icons/build-module/library/arrow-down.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var arrow_down_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives.Path, { d: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); + +// packages/icons/build-module/library/arrow-left.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var arrow_left_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives2.Path, { d: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); + +// packages/icons/build-module/library/arrow-right.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var arrow_right_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives3.Path, { d: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); + +// packages/icons/build-module/library/arrow-up.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var arrow_up_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives4.Path, { d: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); + +// packages/icons/build-module/library/block-table.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives5.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives5.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); + +// packages/icons/build-module/library/category.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var category_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives6.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + import_primitives6.Path, + { + d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", + fillRule: "evenodd", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/check.mjs +var import_primitives7 = __toESM(require_primitives(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var check_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives7.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives8 = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives8.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/cog.mjs +var import_primitives9 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var cog_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( + import_primitives9.Path, + { + fillRule: "evenodd", + d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/envelope.mjs +var import_primitives10 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( + import_primitives10.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" + } +) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives11 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives11.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + import_primitives11.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/format-list-bullets-rtl.mjs +var import_primitives12 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives12.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); + +// packages/icons/build-module/library/format-list-bullets.mjs +var import_primitives13 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives13.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); + +// packages/icons/build-module/library/funnel.mjs +var import_primitives14 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives14.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives14.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); + +// packages/icons/build-module/library/link.mjs +var import_primitives15 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var link_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives15.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); + +// packages/icons/build-module/library/mobile.mjs +var import_primitives16 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives16.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives17 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives17.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives18 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives18.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/pencil.mjs +var import_primitives19 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var pencil_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives19.Path, { d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" }) }); + +// packages/icons/build-module/library/previous.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives20.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/icons/build-module/library/scheduled.mjs +var import_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( + import_primitives21.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z" + } +) }); + +// packages/icons/build-module/library/search.mjs +var import_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var search_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives22.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); + +// packages/icons/build-module/library/seen.mjs +var import_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives23.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives23.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// packages/icons/build-module/library/unseen.mjs +var import_primitives24 = __toESM(require_primitives(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives24.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives24.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var import_element4 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/constants.mjs +var import_i18n = __toESM(require_i18n(), 1); +var OPERATOR_IS_ANY = "isAny"; +var OPERATOR_IS_NONE = "isNone"; +var OPERATOR_IS_ALL = "isAll"; +var OPERATOR_IS_NOT_ALL = "isNotAll"; +var OPERATOR_BETWEEN = "between"; +var OPERATOR_IN_THE_PAST = "inThePast"; +var OPERATOR_OVER = "over"; +var OPERATOR_IS = "is"; +var OPERATOR_IS_NOT = "isNot"; +var OPERATOR_LESS_THAN = "lessThan"; +var OPERATOR_GREATER_THAN = "greaterThan"; +var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; +var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; +var OPERATOR_BEFORE = "before"; +var OPERATOR_AFTER = "after"; +var OPERATOR_BEFORE_INC = "beforeInc"; +var OPERATOR_AFTER_INC = "afterInc"; +var OPERATOR_CONTAINS = "contains"; +var OPERATOR_NOT_CONTAINS = "notContains"; +var OPERATOR_STARTS_WITH = "startsWith"; +var OPERATOR_ON = "on"; +var OPERATOR_NOT_ON = "notOn"; +var SORTING_DIRECTIONS = ["asc", "desc"]; +var sortArrows = { asc: "\u2191", desc: "\u2193" }; +var sortValues = { asc: "ascending", desc: "descending" }; +var sortLabels = { + asc: (0, import_i18n.__)("Sort ascending"), + desc: (0, import_i18n.__)("Sort descending") +}; +var sortIcons = { + asc: arrow_up_default, + desc: arrow_down_default +}; +var LAYOUT_TABLE = "table"; +var LAYOUT_GRID = "grid"; +var LAYOUT_LIST = "list"; +var LAYOUT_ACTIVITY = "activity"; +var LAYOUT_PICKER_GRID = "pickerGrid"; +var LAYOUT_PICKER_TABLE = "pickerTable"; + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var DataViewsContext = (0, import_element4.createContext)({ + view: { type: LAYOUT_TABLE }, + onChangeView: () => { + }, + fields: [], + data: [], + paginationInfo: { + totalItems: 0, + totalPages: 0 + }, + selection: [], + onChangeSelection: () => { + }, + setOpenedFilter: () => { + }, + openedFilter: null, + getItemId: (item) => item.id, + isItemClickable: () => true, + renderItemLink: void 0, + containerWidth: 0, + containerRef: (0, import_element4.createRef)(), + resizeObserverRef: () => { + }, + defaultLayouts: { list: {}, grid: {}, table: {} }, + filters: [], + isShowingFilter: false, + setIsShowingFilter: () => { + }, + hasInfiniteScrollHandler: false, + config: { + perPageSizes: [] + } +}); +DataViewsContext.displayName = "DataViewsContext"; +var dataviews_context_default = DataViewsContext; + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var import_i18n21 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_i18n9 = __toESM(require_i18n(), 1); +var import_components8 = __toESM(require_components(), 1); +var import_element11 = __toESM(require_element(), 1); +var import_keycodes = __toESM(require_keycodes(), 1); + +// packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs +var import_components3 = __toESM(require_components(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +function DataViewsSelectionCheckbox({ + selection, + onChangeSelection, + item, + getItemId: getItemId2, + titleField, + disabled, + ...extraProps +}) { + const id = getItemId2(item); + const checked = !disabled && selection.includes(id); + const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n2.__)("(no title)"); + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + import_components3.CheckboxControl, + { + className: "dataviews-selection-checkbox", + "aria-label": selectionLabel, + "aria-disabled": disabled, + checked, + onChange: () => { + if (disabled) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + }, + ...extraProps + } + ); +} + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_components4 = __toESM(require_components(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_element5 = __toESM(require_element(), 1); +var import_data3 = __toESM(require_data(), 1); +var import_compose = __toESM(require_compose(), 1); + +// packages/dataviews/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/dataviews" +); + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +var { Menu, kebabCase } = unlock(import_components4.privateApis); +function ButtonTrigger({ + action, + onClick, + items, + variant +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + import_components4.Button, + { + disabled: !!action.disabled, + accessibleWhenDisabled: true, + size: "compact", + variant, + onClick, + children: label + } + ); +} +function MenuItemTrigger({ + action, + onClick, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Menu.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Menu.ItemLabel, { children: label }) }); +} +function ActionModal({ + action, + items, + closeModal +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + import_components4.Modal, + { + title: modalHeader || label, + __experimentalHideHeader: !!action.hideModalHeader, + onRequestClose: closeModal, + focusOnMount: action.modalFocusOnMount ?? true, + size: action.modalSize || "medium", + overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase( + action.id + )}`, + children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(action.RenderModal, { items, closeModal }) + } + ); +} +function ActionsMenuGroup({ + actions, + item, + registry, + setActiveModalAction +}) { + const { primaryActions, regularActions } = (0, import_element5.useMemo)(() => { + return actions.reduce( + (acc, action) => { + (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); + return acc; + }, + { + primaryActions: [], + regularActions: [] + } + ); + }, [actions]); + const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + MenuItemTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item] + }, + action.id + )); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Menu.Group, { children: [ + renderActionGroup(primaryActions), + primaryActions.length > 0 && regularActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Menu.Separator, {}), + renderActionGroup(regularActions) + ] }); +} +function ItemActions({ + item, + actions, + isCompact +}) { + const registry = (0, import_data3.useRegistry)(); + const { primaryActions, eligibleActions } = (0, import_element5.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isCompact) { + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + isSmall: true, + registry + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( + Stack, + { + direction: "row", + justify: "flex-end", + className: "dataviews-item-actions", + style: { + flexShrink: 0, + width: "auto" + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + registry + } + ) + ] + } + ); +} +function CompactItemActions({ + item, + actions, + isSmall, + registry +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element5.useState)( + null + ); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Menu, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + Menu.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + import_components4.Button, + { + size: isSmall ? "small" : "compact", + icon: more_vertical_default, + label: (0, import_i18n3.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + className: "dataviews-all-actions-button" + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Menu.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ActionsMenuGroup, + { + actions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} +function PrimaryActions({ + item, + actions, + registry, + buttonVariant +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element5.useState)(null); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isMobileViewport) { + return null; + } + if (!Array.isArray(actions) || actions.length === 0) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [ + actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ButtonTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item], + variant: buttonVariant + }, + action.id + )), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_components5 = __toESM(require_components(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); +var import_element6 = __toESM(require_element(), 1); +var import_data4 = __toESM(require_data(), 1); +var import_compose2 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/utils/get-footer-message.mjs +var import_i18n4 = __toESM(require_i18n(), 1); +function getFooterMessage(selectionCount, itemsCount, totalItems) { + if (selectionCount > 0) { + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item selected", "%d Items selected", selectionCount), + selectionCount + ); + } + if (totalItems > itemsCount) { + return (0, import_i18n4.sprintf)( + /* translators: %1$d: number of items. %2$d: total number of items. */ + (0, import_i18n4._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), + itemsCount, + totalItems + ); + } + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item", "%d Items", itemsCount), + itemsCount + ); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +function ActionWithModal({ + action, + items, + ActionTriggerComponent +}) { + const [isModalOpen, setIsModalOpen] = (0, import_element6.useState)(false); + const actionTriggerProps = { + action, + onClick: () => { + setIsModalOpen(true); + }, + items + }; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), + isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionModal, + { + action, + items, + closeModal: () => setIsModalOpen(false) + } + ) + ] }); +} +function useHasAPossibleBulkAction(actions, item) { + return (0, import_element6.useMemo)(() => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }, [actions, item]); +} +function useSomeItemHasAPossibleBulkAction(actions, data) { + return (0, import_element6.useMemo)(() => { + return data.some((item) => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }); + }, [actions, data]); +} +function BulkSelectionCheckbox({ + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 +}) { + const selectableItems = (0, import_element6.useMemo)(() => { + return data.filter((item) => { + return actions.some( + (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) + ); + }); + }, [data, actions]); + const selectedItems = data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + const areAllSelected = selectedItems.length === selectableItems.length; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components5.CheckboxControl, + { + className: "dataviews-view-table-selection-checkbox", + checked: areAllSelected, + indeterminate: !areAllSelected && !!selectedItems.length, + onChange: () => { + if (areAllSelected) { + onChangeSelection([]); + } else { + onChangeSelection( + selectableItems.map((item) => getItemId2(item)) + ); + } + }, + "aria-label": areAllSelected ? (0, import_i18n5.__)("Deselect all") : (0, import_i18n5.__)("Select all") + } + ); +} +function ActionTrigger({ + action, + onClick, + isBusy, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + if (isMobile) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components5.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + label, + icon: action.icon, + size: "compact", + onClick, + isBusy + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components5.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + size: "compact", + onClick, + isBusy, + children: label + } + ); +} +var EMPTY_ARRAY2 = []; +function ActionButton({ + action, + selectedItems, + actionInProgress, + setActionInProgress +}) { + const registry = (0, import_data4.useRegistry)(); + const selectedEligibleItems = (0, import_element6.useMemo)(() => { + return selectedItems.filter((item) => { + return !action.isEligible || action.isEligible(item); + }); + }, [action, selectedItems]); + if ("RenderModal" in action) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionWithModal, + { + action, + items: selectedEligibleItems, + ActionTriggerComponent: ActionTrigger + }, + action.id + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionTrigger, + { + action, + onClick: async () => { + setActionInProgress(action.id); + await action.callback(selectedItems, { + registry + }); + setActionInProgress(null); + }, + items: selectedEligibleItems, + isBusy: actionInProgress === action.id + }, + action.id + ); +} +function renderFooterContent(data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { + const message2 = getFooterMessage( + selection.length, + data.length, + paginationInfo.totalItems + ); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__container", + gap: "md", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), + /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__action-buttons", + gap: "xs", + children: [ + actionsToShow.map((action) => { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionButton, + { + action, + selectedItems, + actionInProgress, + setActionInProgress + }, + action.id + ); + }), + selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components5.Button, + { + icon: close_small_default, + showTooltip: true, + tooltipPosition: "top", + size: "compact", + label: (0, import_i18n5.__)("Cancel"), + disabled: !!actionInProgress, + accessibleWhenDisabled: false, + onClick: () => { + onChangeSelection(EMPTY_ARRAY2); + } + } + ) + ] + } + ) + ] + } + ); +} +function FooterContent({ + selection, + actions, + onChangeSelection, + data, + getItemId: getItemId2, + paginationInfo +}) { + const [actionInProgress, setActionInProgress] = (0, import_element6.useState)( + null + ); + const footerContentRef = (0, import_element6.useRef)(null); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + const bulkActions = (0, import_element6.useMemo)( + () => actions.filter((action) => action.supportsBulk), + [actions] + ); + const selectableItems = (0, import_element6.useMemo)(() => { + return data.filter((item) => { + return bulkActions.some( + (action) => !action.isEligible || action.isEligible(item) + ); + }); + }, [data, bulkActions]); + const selectedItems = (0, import_element6.useMemo)(() => { + return data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + }, [selection, data, getItemId2, selectableItems]); + const actionsToShow = (0, import_element6.useMemo)( + () => actions.filter((action) => { + return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( + (item) => !action.isEligible || action.isEligible(item) + ); + }), + [actions, selectedItems, isMobile] + ); + if (!actionInProgress) { + if (footerContentRef.current) { + footerContentRef.current = null; + } + return renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } else if (!footerContentRef.current) { + footerContentRef.current = renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } + return footerContentRef.current; +} +function BulkActionsFooter() { + const { + data, + selection, + actions = EMPTY_ARRAY2, + onChangeSelection, + getItemId: getItemId2, + paginationInfo + } = (0, import_element6.useContext)(dataviews_context_default); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + FooterContent, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2, + paginationInfo + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_i18n6 = __toESM(require_i18n(), 1); +var import_components6 = __toESM(require_components(), 1); +var import_element7 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/utils/get-hideable-fields.mjs +function getHideableFields(view, fields) { + const togglableFields = [ + view?.titleField, + view?.mediaField, + view?.descriptionField + ].filter(Boolean); + return fields.filter( + (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock(import_components6.privateApis); +function WithMenuSeparators({ children }) { + return import_element7.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_element7.Fragment, { children: [ + i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Separator, {}), + child + ] }, i2)); +} +var _HeaderMenu = (0, import_element7.forwardRef)(function HeaderMenu({ + fieldId, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove = true, + canInsertLeft = true, + canInsertRight = true +}, ref) { + const visibleFieldIds = view.fields ?? []; + const index = visibleFieldIds?.indexOf(fieldId); + const isSorted = view.sort?.field === fieldId; + let isHidable = false; + let isSortable = false; + let canAddFilter = false; + let operators = []; + const field = fields.find((f2) => f2.id === fieldId); + const { setIsShowingFilter } = (0, import_element7.useContext)(dataviews_context_default); + if (!field) { + return null; + } + isHidable = field.enableHiding !== false; + isSortable = field.enableSorting !== false; + const header = field.header; + operators = !!field.filterBy && field.filterBy?.operators || []; + canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; + if (!isSortable && !canMove && !isHidable && !canAddFilter) { + return header; + } + const hiddenFields = getHideableFields(view, fields).filter( + (f2) => !visibleFieldIds.includes(f2.id) + ); + const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; + const isRtl = (0, import_i18n6.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + Menu2.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components6.Button, + { + size: "compact", + className: "dataviews-view-table-header-button", + ref, + variant: "tertiary" + } + ), + children: [ + header, + view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(WithMenuSeparators, { children: [ + isSortable && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Group, { children: SORTING_DIRECTIONS.map( + (direction) => { + const isChecked = view.sort && isSorted && view.sort.direction === direction; + const value = `${fieldId}-${direction}`; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.RadioItem, + { + name: "view-table-sorting", + value, + checked: isChecked, + onChange: () => { + onChangeView({ + ...view, + sort: { + field: fieldId, + direction + }, + showLevels: false + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: sortLabels[direction] }) + }, + value + ); + } + ) }), + canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Icon, { icon: funnel_default }), + onClick: () => { + setOpenedFilter(fieldId); + setIsShowingFilter(true); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: fieldId, + value: void 0, + operator: operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Add filter") }) + } + ) }), + (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Menu2.Group, { children: [ + canMove && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Icon, { icon: arrow_left_default }), + disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, + onClick: () => { + const targetIndex = isRtl ? index + 1 : index - 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move left") }) + } + ), + canMove && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Icon, { icon: arrow_right_default }), + disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, + onClick: () => { + const targetIndex = isRtl ? index - 1 : index + 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move right") }) + } + ), + canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert left") }) }), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index + 1 : index; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert right") }) }), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index : index + 1; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Icon, { icon: unseen_default }), + onClick: () => { + onHide(field); + onChangeView({ + ...view, + fields: visibleFieldIds.filter( + (id) => id !== fieldId + ) + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Hide column") }) + } + ) + ] }) + ] }) }) + ] }); +}); +var ColumnHeaderMenu = _HeaderMenu; +var column_header_menu_default = ColumnHeaderMenu; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs +var import_element8 = __toESM(require_element(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +function getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className +}) { + if (!isItemClickable(item) || !onClickItem) { + return { className }; + } + return { + className: className ? `${className} ${className}--clickable` : void 0, + role: "button", + tabIndex: 0, + onClick: (event) => { + event.stopPropagation(); + onClickItem(item); + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + onClickItem(item); + } + } + }; +} +function ItemClickWrapper({ + item, + isItemClickable, + onClickItem, + renderItemLink, + className, + children, + ...extraProps +}) { + if (!isItemClickable(item)) { + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className, ...extraProps, children }); + } + if (renderItemLink) { + const renderedElement = renderItemLink({ + item, + className: `${className} ${className}--clickable`, + ...extraProps, + children + }); + return (0, import_element8.cloneElement)(renderedElement, { + onClick: (event) => { + event.stopPropagation(); + if (renderedElement.props.onClick) { + renderedElement.props.onClick(event); + } + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + if (renderedElement.props.onKeyDown) { + renderedElement.props.onKeyDown(event); + } + } + } + }); + } + const clickProps = getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className + }); + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { ...clickProps, ...extraProps, children }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +function ColumnPrimary({ + item, + level, + titleField, + mediaField, + descriptionField, + onClickItem, + renderItemLink, + isItemClickable +}) { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ + mediaField && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", + "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "32px" } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( + Stack, + { + direction: "column", + align: "flex-start", + className: "dataviews-view-table__primary-column-content", + children: [ + titleField && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", + children: [ + level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { className: "dataviews-view-table__level", children: [ + Array(level).fill("\u2014").join(" "), + "\xA0" + ] }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(titleField.render, { item, field: titleField }) + ] + } + ), + descriptionField && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) + ] + } + ) + ] }); +} +var column_primary_default = ColumnPrimary; + +// packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs +var import_compose3 = __toESM(require_compose(), 1); +var import_element9 = __toESM(require_element(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); +var isScrolledToEnd = (element) => { + if ((0, import_i18n7.isRTL)()) { + const scrollLeft = Math.abs(element.scrollLeft); + return scrollLeft <= 1; + } + return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; +}; +function useIsHorizontalScrollEnd({ + scrollContainerRef, + enabled = false +}) { + const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element9.useState)(false); + const handleIsHorizontalScrollEnd = (0, import_compose3.useDebounce)( + (0, import_element9.useCallback)(() => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); + } + }, [scrollContainerRef, setIsHorizontalScrollEnd]), + 200 + ); + (0, import_element9.useEffect)(() => { + if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { + return () => { + }; + } + handleIsHorizontalScrollEnd(); + scrollContainerRef.current.addEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.addEventListener("resize", handleIsHorizontalScrollEnd); + return () => { + scrollContainerRef.current?.removeEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.removeEventListener("resize", handleIsHorizontalScrollEnd); + }; + }, [scrollContainerRef, enabled]); + return isHorizontalScrollEnd; +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs +function getDataByGroup(data, groupByField) { + return data.reduce((groups, item) => { + const groupName = groupByField.getValue({ item }); + if (!groups.has(groupName)) { + groups.set(groupName, []); + } + groups.get(groupName)?.push(item); + return groups; + }, /* @__PURE__ */ new Map()); +} + +// packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs +var import_components7 = __toESM(require_components(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); +var import_element10 = __toESM(require_element(), 1); +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +function FieldItem({ + field, + isVisible: isVisible2, + onToggleVisibility +}) { + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components7.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components7.Icon, { icon: check_default }) }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) + ] }) }); +} +function isDefined(item) { + return !!item; +} +function PropertiesSection({ + showLabel = true +}) { + const { view, fields, onChangeView } = (0, import_element10.useContext)(dataviews_context_default); + const regularFields = getHideableFields(view, fields); + if (!regularFields?.length) { + return null; + } + const titleField = fields.find((f2) => f2.id === view.titleField); + const previewField = fields.find((f2) => f2.id === view.mediaField); + const descriptionField = fields.find( + (f2) => f2.id === view.descriptionField + ); + const lockedFields = [ + { + field: titleField, + isVisibleFlag: "showTitle" + }, + { + field: previewField, + isVisibleFlag: "showMedia" + }, + { + field: descriptionField, + isVisibleFlag: "showDescription" + } + ].filter(({ field }) => isDefined(field)); + const visibleFieldIds = view.fields ?? []; + const visibleRegularFieldsCount = regularFields.filter( + (f2) => visibleFieldIds.includes(f2.id) + ).length; + const visibleLockedFields = lockedFields.filter( + ({ isVisibleFlag }) => ( + // @ts-expect-error + view[isVisibleFlag] ?? true + ) + ); + const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; + const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; + return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ + showLabel && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components7.BaseControl.VisualLabel, { children: (0, import_i18n8.__)("Properties") }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config__properties", + children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_components7.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ + lockedFields.map(({ field, isVisibleFlag }) => { + const isVisible2 = view[isVisibleFlag] ?? true; + const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + [isVisibleFlag]: !isVisible2 + }); + } + }, + field.id + ); + }), + regularFields.map((field) => { + const isVisible2 = visibleFieldIds.includes(field.id); + const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + fields: isVisible2 ? visibleFieldIds.filter( + (fieldId) => fieldId !== field.id + ) : [...visibleFieldIds, field.id] + }); + } + }, + field.id + ); + }) + ] }) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +function TableColumnField({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(field.render, { item, field }) }); +} +function TableRow({ + hasBulkActions, + item, + level, + actions, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + isItemClickable, + onClickItem, + renderItemLink, + onChangeSelection, + isActionsColumnSticky, + posinset +}) { + const { paginationInfo } = (0, import_element11.useContext)(dataviews_context_default); + const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); + const isSelected2 = hasPossibleBulkAction && selection.includes(id); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const isTouchDeviceRef = (0, import_element11.useRef)(false); + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": hasPossibleBulkAction && isSelected2, + "has-bulk-actions": hasPossibleBulkAction + }), + onTouchStart: () => { + isTouchDeviceRef.current = true; + }, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : void 0, + onMouseDown: (event) => { + const isMetaClick = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { + event?.preventDefault(); + } + }, + onClick: (event) => { + if (!hasPossibleBulkAction) { + return; + } + const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasPossibleBulkAction + } + ) }) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + column_primary_default, + { + item, + level, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable, + onClickItem, + renderItemLink + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + TableColumnField, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }), + !!actions?.length && // Disable reason: we are not making the element interactive, + // but preventing any click events from bubbling up to the + // table row. This allows us to add a click handler to the row + // itself (to toggle row selection) without erroneously + // intercepting click events from ItemActions. + /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "td", + { + className: clsx_default("dataviews-view-table__actions-column", { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": isActionsColumnSticky + }), + onClick: (e2) => e2.stopPropagation(), + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ItemActions, { item, actions }) + } + ) + ] + } + ); +} +function ViewTable({ + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + view, + className, + empty +}) { + const { containerRef } = (0, import_element11.useContext)(dataviews_context_default); + const headerMenuRefs = (0, import_element11.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element11.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element11.useState)(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element11.useState)(null); + (0, import_element11.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element11.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const handleHeaderContextMenu = (event) => { + event.preventDefault(); + event.stopPropagation(); + const virtualAnchor = { + getBoundingClientRect: () => ({ + x: event.clientX, + y: event.clientY, + top: event.clientY, + left: event.clientX, + right: event.clientX, + bottom: event.clientY, + width: 0, + height: 0, + toJSON: () => ({}) + }) + }; + window.requestAnimationFrame(() => { + setContextMenuAnchor(virtualAnchor); + }); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const isRtl = (0, import_i18n9.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + "table", + { + className: clsx_default("dataviews-view-table", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ), + "has-bulk-actions": hasBulkActions + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("colgroup", { children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("col", { className: "dataviews-view-table__col-first-data" }), + columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "col", + { + className: clsx_default( + `dataviews-view-table__col-${column}`, + { + "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 + } + ) + }, + `col-${column}` + )), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("col", { className: "dataviews-view-table__col-actions" }) + ] }), + contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components8.Popover, + { + anchor: contextMenuAnchor, + onClose: () => setContextMenuAnchor(null), + placement: "bottom-start", + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PropertiesSection, { showLabel: false }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("tr", { className: "dataviews-view-table__row", children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "th", + { + className: "dataviews-view-table__checkbox-column", + scope: "col", + onContextMenu: handleHeaderContextMenu, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false, + canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, + canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: canInsertOrMove, + canInsertLeft: canInsertOrMove, + canInsertRight: canInsertOrMove + } + ) + }, + column + ); + }), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "th", + { + className: clsx_default( + "dataviews-view-table__actions-column", + { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd + } + ), + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n9.__)("Actions") }) + } + ) + ] }) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("tbody", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), + className: "dataviews-view-table__group-header-cell", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n9.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n9.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) }), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd + }, + getItemId2(item) + )) + ] }, `group-${groupName}`) + ) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd, + posinset: isInfiniteScroll ? index + 1 : void 0 + }, + getItemId2(item) + )) }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components8.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components8.Spinner, {}) }) + ] + } + ) + ] }); +} +var table_default = ViewTable; + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_components11 = __toESM(require_components(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_components10 = __toESM(require_components(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); +var import_compose4 = __toESM(require_compose(), 1); +var import_keycodes2 = __toESM(require_keycodes(), 1); +var import_element13 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs +var import_components9 = __toESM(require_components(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); +var import_element12 = __toESM(require_element(), 1); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +var imageSizes = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; +function useGridColumns() { + const context = (0, import_element12.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element12.useMemo)(() => { + const containerWidth = context.containerWidth; + const gap = 32; + const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; + const columns = Math.floor( + (containerWidth + gap) / (previewSize + gap) + ); + return Math.max(1, columns); + }, [context.containerWidth, view.layout?.previewSize]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +var { Badge } = unlock(import_components10.privateApis); +function chunk(array, size) { + const chunks = []; + for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { + chunks.push(array.slice(i2, i2 + size)); + } + return chunks; +} +var GridItem = (0, import_element13.forwardRef)(function GridItem2({ + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config, + ...props +}, ref) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasBulkAction = useHasAPossibleBulkAction(actions, item); + const id = getItemId2(item); + const instanceId = (0, import_compose4.useInstanceId)(GridItem2); + const isSelected2 = selection.includes(id); + const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); + const rendersMediaField = showMedia && mediaField?.render; + const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : mediaPlaceholder; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(titleField.render, { item, field: titleField }) : null; + let mediaA11yProps; + let titleA11yProps; + if (isItemClickable(item) && onClickItem) { + if (renderedTitleField) { + mediaA11yProps = { + "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` + }; + titleA11yProps = { + id: `dataviews-view-grid__title-field-${instanceId}` + }; + } else { + mediaA11yProps = { + "aria-label": (0, import_i18n11.__)("Navigate to item") + }; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( + Stack, + { + direction: "column", + ...props, + ref, + className: clsx_default( + props.className, + "dataviews-view-grid__row__gridcell", + "dataviews-view-grid__card", + { + "is-selected": hasBulkAction && isSelected2 + } + ), + onClickCapture: (event) => { + props.onClickCapture?.(event); + if ((0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey) { + event.stopPropagation(); + event.preventDefault(); + if (!hasBulkAction) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: clsx_default("dataviews-view-grid__media", { + "dataviews-view-grid__media--placeholder": !rendersMediaField + }), + ...mediaA11yProps, + children: renderedMediaField + } + ), + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasBulkAction + } + ), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ItemActions, { item, actions, isCompact: true }) }), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-grid__title-field dataviews-title-field", + ...titleA11yProps, + title: titleField?.getValueFormatted({ + item, + field: titleField + }) || void 0, + children: renderedTitleField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + Badge, + { + className: "dataviews-view-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components10.Flex, + { + className: "dataviews-view-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components10.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components10.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components10.FlexItem, + { + className: "dataviews-view-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + } + ); +}); +function CompositeGrid({ + data, + isInfiniteScroll, + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element13.useContext)(dataviews_context_default); + const gridColumns = useGridColumns(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const size = "900px"; + const totalRows = Math.ceil(data.length / gridColumns); + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components10.Composite, + { + role: isInfiniteScroll ? "feed" : "grid", + className: clsx_default("dataviews-view-grid", className), + focusWrap: true, + "aria-busy": isLoading, + "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, + ref: resizeObserverRef, + children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components10.Composite.Row, + { + render: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + "div", + { + role: "row", + "aria-rowindex": i2 + 1, + "aria-label": (0, import_i18n11.sprintf)( + /* translators: %d: The row number in the grid */ + (0, import_i18n11.__)("Row %d"), + i2 + 1 + ), + className: "dataviews-view-grid__row", + style: { + gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` + } + } + ), + children: row.map((item, indexInRow) => { + const index = i2 * gridColumns + indexInRow; + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components10.Composite.Item, + { + render: (props) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + GridItem, + { + ...props, + role: isInfiniteScroll ? "article" : "gridcell", + "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, + "aria-posinset": isInfiniteScroll ? index + 1 : void 0, + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config: { + sizes: size + } + } + ) + }, + getItemId2(item) + ); + }) + }, + i2 + )) + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); +function ViewGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + selection, + view, + className, + empty +}) { + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const gridProps = { + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions + }; + return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n12.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n12.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + CompositeGrid, + { + ...gridProps, + data: groupItems, + isInfiniteScroll: false + } + ) + ] + }, + groupName + ) + ) }), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components11.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components11.Spinner, {}) }) + ] + }); +} +var grid_default = ViewGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs +var import_compose5 = __toESM(require_compose(), 1); +var import_components12 = __toESM(require_components(), 1); +var import_element14 = __toESM(require_element(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); +var import_data5 = __toESM(require_data(), 1); +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock(import_components12.privateApis); +function generateItemWrapperCompositeId(idPrefix) { + return `${idPrefix}-item-wrapper`; +} +function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { + return `${idPrefix}-primary-action-${primaryActionId}`; +} +function generateDropdownTriggerCompositeId(idPrefix) { + return `${idPrefix}-dropdown`; +} +function PrimaryActionGridCell({ + idPrefix, + primaryAction, + item +}) { + const registry = (0, import_data5.useRegistry)(); + const [isModalOpen, setIsModalOpen] = (0, import_element14.useState)(false); + const compositeItemId = generatePrimaryActionCompositeId( + idPrefix, + primaryAction.id + ); + const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); + return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + text: label, + size: "small", + onClick: () => setIsModalOpen(true) + } + ), + children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + ActionModal, + { + action: primaryAction, + items: [item], + closeModal: () => setIsModalOpen(false) + } + ) + } + ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + size: "small", + onClick: () => { + primaryAction.callback([item], { registry }); + }, + children: label + } + ) + } + ) }, primaryAction.id); +} +function ListItem({ + view, + actions, + idPrefix, + isSelected: isSelected2, + item, + titleField, + mediaField, + descriptionField, + onSelect, + otherFields, + onDropdownTriggerKeyDown, + posinset +}) { + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element14.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element14.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element14.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element14.useContext)(dataviews_context_default); + (0, import_element14.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element14.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryAction: _primaryActions[0], + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; + const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "52px" } + } + ) }) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(titleField.render, { item, field: titleField }) : null; + const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "row", + gap: "md", + className: "dataviews-view-list__item-actions", + children: [ + primaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + PrimaryActionGridCell, + { + idPrefix, + primaryAction, + item + } + ), + !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { role: "gridcell", children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Menu3, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + Menu3.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite.Item, + { + id: generateDropdownTriggerCompositeId( + idPrefix + ), + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Button, + { + size: "small", + icon: more_vertical_default, + label: (0, import_i18n13.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + onKeyDown: onDropdownTriggerKeyDown + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Menu3.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + ActionsMenuGroup, + { + actions: eligibleActions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }) + ] + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite.Row, + { + ref: itemRef, + render: ( + /* aria-posinset breaks Composite.Row if passed to it directly. */ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 + } + ) + ), + role: infiniteScrollEnabled ? "article" : "row", + className: clsx_default({ + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleHover, + onMouseLeave: handleHover, + children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-view-list__item-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite.Item, + { + id: generateItemWrapperCompositeId(idPrefix), + "aria-pressed": isSelected2, + "aria-labelledby": labelId, + "aria-describedby": descriptionId, + className: "dataviews-view-list__item", + onClick: () => onSelect(item) + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "row", + gap: "md", + justify: "start", + align: "flex-start", + style: { flex: 1, minWidth: 0 }, + children: [ + renderedMediaField, + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "column", + gap: "xs", + className: "dataviews-view-list__field-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Stack, { direction: "row", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: "dataviews-title-field dataviews-view-list__title-field", + id: labelId, + children: renderedTitleField + } + ), + usedActions + ] }), + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: "dataviews-view-list__fields", + id: descriptionId, + children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + "div", + { + className: "dataviews-view-list__field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.VisuallyHidden, + { + as: "span", + className: "dataviews-view-list__field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) + } + ) + ] + } + ) + ] + } + ) + ] + } + ) + } + ); +} +function isDefined2(item) { + return !!item; +} +function ViewList(props) { + const { + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty + } = props; + const baseId = (0, import_compose5.useInstanceId)(ViewList, "view-list"); + const selectedItem = data?.findLast( + (item) => selection.includes(getItemId2(item)) + ); + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); + const onSelect = (item) => onChangeSelection([getItemId2(item)]); + const generateCompositeItemIdPrefix = (0, import_element14.useCallback)( + (item) => `${baseId}-${getItemId2(item)}`, + [baseId, getItemId2] + ); + const isActiveCompositeItem = (0, import_element14.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element14.useState)(void 0); + (0, import_element14.useEffect)(() => { + if (selectedItem) { + setActiveCompositeId( + generateItemWrapperCompositeId( + generateCompositeItemIdPrefix(selectedItem) + ) + ); + } + }, [selectedItem, generateCompositeItemIdPrefix]); + const activeItemIndex = data.findIndex( + (item) => isActiveCompositeItem(item, activeCompositeId ?? "") + ); + const previousActiveItemIndex = (0, import_compose5.usePrevious)(activeItemIndex); + const isActiveIdInList = activeItemIndex !== -1; + const selectCompositeItem = (0, import_element14.useCallback)( + (targetIndex, generateCompositeId) => { + const clampedIndex = Math.min( + data.length - 1, + Math.max(0, targetIndex) + ); + if (!data[clampedIndex]) { + return; + } + const itemIdPrefix = generateCompositeItemIdPrefix( + data[clampedIndex] + ); + const targetCompositeItemId = generateCompositeId(itemIdPrefix); + setActiveCompositeId(targetCompositeItemId); + document.getElementById(targetCompositeItemId)?.focus(); + }, + [data, generateCompositeItemIdPrefix] + ); + (0, import_element14.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element14.useCallback)( + (event) => { + if (event.key === "ArrowDown") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex + 1, + generateDropdownTriggerCompositeId + ); + } + if (event.key === "ArrowUp") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex - 1, + generateDropdownTriggerCompositeId + ); + } + }, + [selectCompositeItem, activeItemIndex] + ); + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_components12.Spinner, {}) }) : empty) + } + ); + } + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite, + { + id: `${baseId}`, + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", {}), + className: "dataviews-view-list__group", + role: "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + Stack, + { + direction: "column", + gap: "lg", + className: clsx_default("dataviews-view-list", className), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n13.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n13.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + groupItems.map((item) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown + }, + id + ); + }) + ] + }, + groupName + ) + ) + } + ) + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components12.Composite, + { + id: baseId, + render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", {}), + className: clsx_default("dataviews-view-list", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: data.map((item, index) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + }, + id + ); + }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_components12.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_components14 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs +var import_i18n14 = __toESM(require_i18n(), 1); +var import_element15 = __toESM(require_element(), 1); +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +function ActivityGroup({ + groupName, + groupData, + groupField, + showLabel = true, + children +}) { + const groupHeader = showLabel ? (0, import_element15.createInterpolateElement)( + // translators: %s: The label of the field e.g. "Status". + (0, import_i18n14.sprintf)((0, import_i18n14.__)("%s: "), groupField.label).trim(), + { + groupName: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + groupField.render, + { + item: groupData[0], + field: groupField + } + ) + } + ) : /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(groupField.render, { item: groupData[0], field: groupField }); + return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-activity__group", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), + children + ] + }, + groupName + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs +var import_components13 = __toESM(require_components(), 1); +var import_element16 = __toESM(require_element(), 1); +var import_data6 = __toESM(require_data(), 1); +var import_compose6 = __toESM(require_compose(), 1); +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +function ActivityItem(props) { + const { + view, + actions, + item, + titleField, + mediaField, + descriptionField, + otherFields, + posinset, + onClickItem, + renderItemLink, + isItemClickable + } = props; + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element16.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element16.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element16.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose6.useViewportMatch)("medium", "<"); + const density = view.layout?.density ?? "balanced"; + const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { + sizes: density === "comfortable" ? "32px" : "24px" + } + } + ) : null; + const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + "span", + { + className: "dataviews-view-activity__item-bullet", + "aria-hidden": "true" + } + ) }); + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(titleField.render, { item, field: titleField }) : null; + const verticalGap = (0, import_element16.useMemo)(() => { + switch (density) { + case "comfortable": + return "md"; + default: + return "sm"; + } + }, [density]); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + "div", + { + ref: itemRef, + role: infiniteScrollEnabled ? "article" : void 0, + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + className: clsx_default( + "dataviews-view-activity__item", + density === "compact" && "is-compact", + density === "balanced" && "is-balanced", + density === "comfortable" && "is-comfortable" + ), + children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + Stack, + { + direction: "column", + gap: "xs", + align: "center", + className: "dataviews-view-activity__item-type", + children: renderedMediaField + } + ), + /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( + Stack, + { + direction: "column", + gap: verticalGap, + align: "flex-start", + className: "dataviews-view-activity__item-content", + children: [ + renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-activity__item-title", + children: renderedTitleField + } + ), + showDescription && descriptionField && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( + "div", + { + className: "dataviews-view-activity__item-field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + import_components13.VisuallyHidden, + { + as: "span", + className: "dataviews-view-activity__item-field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) }), + !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry, + buttonVariant: "secondary" + } + ) + ] + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport && // At the same time, only show the menu if there are actions to show. + eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ItemActions, + { + item, + actions: eligibleActions, + isCompact: true + } + ) }) + ] }) + } + ); +} +var activity_item_default = ActivityItem; + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs +var import_react3 = __toESM(require_react(), 1); +function isDefined3(item) { + return !!item; +} +function ActivityItems(props) { + const { data, fields, getItemId: getItemId2, view } = props; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); + return data.map((item, index) => { + return /* @__PURE__ */ (0, import_react3.createElement)( + activity_item_default, + { + ...props, + key: getItemId2(item), + item, + mediaField, + titleField, + descriptionField, + otherFields, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + } + ); + }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +function ViewActivity(props) { + const { empty, data, fields, isLoading, view, className } = props; + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components14.Spinner, {}) }) : empty) + } + ); + } + const wrapperClassName = clsx_default("dataviews-view-activity", className); + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Stack, { direction: "column", gap: "sm", className: wrapperClassName, children: groupedEntries.map( + ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActivityGroup, + { + groupName, + groupData, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActivityItems, + { + ...props, + data: groupData + } + ) + }, + groupName + ) + ) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + className: wrapperClassName, + role: view.infiniteScrollEnabled ? "feed" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ActivityItems, { ...props }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components14.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_components17 = __toESM(require_components(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); +var import_compose7 = __toESM(require_compose(), 1); +var import_element20 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_components16 = __toESM(require_components(), 1); +var import_data7 = __toESM(require_data(), 1); +var import_element18 = __toESM(require_element(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-pagination/index.mjs +var import_components15 = __toESM(require_components(), 1); +var import_element17 = __toESM(require_element(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); +function DataViewsPagination() { + const { + view, + onChangeView, + paginationInfo: { totalItems = 0, totalPages } + } = (0, import_element17.useContext)(dataviews_context_default); + if (!totalItems || !totalPages || view.infiniteScrollEnabled) { + return null; + } + const currentPage = view.page ?? 1; + const pageSelectOptions = Array.from(Array(totalPages)).map( + (_, i2) => { + const page = i2 + 1; + return { + value: page.toString(), + label: page.toString(), + "aria-label": currentPage === page ? (0, import_i18n15.sprintf)( + // translators: 1: current page number. 2: total number of pages. + (0, import_i18n15.__)("Page %1$d of %2$d"), + currentPage, + totalPages + ) : page.toString() + }; + } + ); + return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-pagination", + justify: "end", + align: "center", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + align: "center", + gap: "xs", + className: "dataviews-pagination__page-select", + children: (0, import_element17.createInterpolateElement)( + (0, import_i18n15.sprintf)( + // translators: 1: Current page number, 2: Total number of pages. + (0, import_i18n15._x)( + "
      Page
      %1$s
      of %2$d
      ", + "paging" + ), + "", + totalPages + ), + { + div: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { "aria-hidden": true }), + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components15.SelectControl, + { + "aria-label": (0, import_i18n15.__)("Current page"), + value: currentPage.toString(), + options: pageSelectOptions, + onChange: (newValue) => { + onChangeView({ + ...view, + page: +newValue + }); + }, + size: "small", + variant: "minimal" + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components15.Button, + { + onClick: () => onChangeView({ + ...view, + page: currentPage - 1 + }), + disabled: currentPage === 1, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Previous page"), + icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components15.Button, + { + onClick: () => onChangeView({ ...view, page: currentPage + 1 }), + disabled: currentPage >= totalPages, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Next page"), + icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ) + ] }) + ] + } + ); +} +var dataviews_pagination_default = (0, import_element17.memo)(DataViewsPagination); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +function useIsMultiselectPicker(actions) { + return (0, import_element18.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element19 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element19.forwardRef)(({ className, previewSize, ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + "div", + { + ref, + className: clsx_default("dataviews-view-grid-items", className), + style: { + gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` + }, + ...props + } + ); +}); + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +var { Badge: Badge2 } = unlock(import_components17.privateApis); +function GridItem3({ + view, + multiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config, + posinset, + setsize +}) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const id = getItemId2(item); + const isSelected2 = selection.includes(id); + const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(titleField.render, { item, field: titleField }) : null; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)( + import_components17.Composite.Item, + { + "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n17.__)("(no title)") : void 0, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Stack, { direction: "column", children, ...props }), + role: "option", + "aria-posinset": posinset, + "aria-setsize": setsize, + className: clsx_default("dataviews-view-picker-grid__card", { + "is-selected": isSelected2 + }), + "aria-selected": isSelected2, + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Stack, + { + direction: "row", + justify: "space-between", + className: "dataviews-view-picker-grid__title-actions", + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-picker-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Badge2, + { + className: "dataviews-view-picker-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-picker-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + import_components17.Flex, + { + className: "dataviews-view-picker-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components17.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + import_components17.FlexItem, + { + className: "dataviews-view-picker-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + }, + id + ); +} +function GridGroup({ + groupName, + groupField, + showLabel = true, + children +}) { + const headerId = (0, import_compose7.useInstanceId)( + GridGroup, + "dataviews-view-picker-grid-group__header" + ); + return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + role: "group", + "aria-labelledby": headerId, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + "h3", + { + className: "dataviews-view-picker-grid-group__header", + id: headerId, + children: showLabel ? (0, import_i18n17.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n17.__)("%1$s: %2$s"), + groupField.label, + groupName + ) : groupName + } + ), + children + ] + }, + groupName + ); +} +function ViewPickerGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty +}) { + const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element20.useContext)(dataviews_context_default); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const hasData = !!data?.length; + const usedPreviewSize = view.layout?.previewSize; + const isMultiselect = useIsMultiselectPicker(actions); + const size = "900px"; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const currentPage = view?.page ?? 1; + const perPage = view?.perPage ?? 0; + const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + import_components17.Composite, + { + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + "aria-label": itemListLabel, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Stack, + { + direction: "column", + gap: "lg", + children, + ...props + } + ), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + GridGroup, + { + groupName, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + GridItems, + { + previewSize: usedPreviewSize, + style: { + gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` + }, + "aria-busy": isLoading, + ref: resizeObserverRef, + children: groupItems.map((item) => { + const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset: posInSet, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ) + }, + groupName + ) + ) + } + ), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + import_components17.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + GridItems, + { + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + previewSize: usedPreviewSize, + "aria-busy": isLoading, + ref: resizeObserverRef + } + ), + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + "aria-label": itemListLabel, + children: data.map((item, index) => { + let posinset = isInfiniteScroll ? index + 1 : void 0; + if (!isInfiniteScroll) { + posinset = (currentPage - 1) * perPage + index + 1; + } + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components17.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components17.Spinner, {}) }) + ] + }); +} +var picker_grid_default = ViewPickerGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs +var import_i18n18 = __toESM(require_i18n(), 1); +var import_components18 = __toESM(require_components(), 1); +var import_element21 = __toESM(require_element(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +function TableColumnField2({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(field.render, { item, field }) }); +} +function TableRow2({ + item, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect, + posinset +}) { + const { paginationInfo } = (0, import_element21.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element21.useState)(false); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const handleMouseEnter = () => { + setIsHovered(true); + }; + const handleMouseLeave = () => { + setIsHovered(false); + }; + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + import_components18.Composite.Item, + { + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, + children, + ...props + } + ), + "aria-selected": isSelected2, + "aria-setsize": paginationInfo.totalItems || void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : "option", + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + className: "dataviews-view-table__checkbox-column", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ) }) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_primary_default, + { + item, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable: () => false + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableColumnField2, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }) + ] + }, + id + ); +} +function ViewPickerTable({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + view, + className, + empty +}) { + const headerMenuRefs = (0, import_element21.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element21.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element21.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element21.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element21.useId)(); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "table", + { + className: clsx_default( + "dataviews-view-table", + "dataviews-view-picker-table", + className, + { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + } + ), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : "listbox", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "tr", + { + className: "dataviews-view-table__row", + role: "presentation", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: view.layout?.enableMoving ?? true + } + ) + }, + column + ); + }) + ] + } + ) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + import_components18.Composite, + { + virtualFocus: true, + orientation: "vertical", + render: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("tbody", { role: "group" }), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "tr", + { + className: "dataviews-view-table__group-header-row", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, + className: "dataviews-view-table__group-header-cell", + role: "presentation", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n18.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n18.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) + } + ), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect + }, + getItemId2(item) + )) + ] + }, + `group-${groupName}` + ) + ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components18.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("tbody", { role: "presentation" }), + virtualFocus: true, + orientation: "vertical", + children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect, + posinset: index + 1 + }, + getItemId2(item) + )) + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components18.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components18.Spinner, {}) }) + ] + } + ) + ] }); +} +var picker_table_default = ViewPickerTable; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs +var import_components19 = __toESM(require_components(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +var imageSizes2 = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +function PreviewSizePicker() { + const context = (0, import_element22.useContext)(dataviews_context_default); + const view = context.view; + const breakValues = imageSizes2.filter((size) => { + return context.containerWidth >= size.breakpoint; + }); + const layoutPreviewSize = view.layout?.previewSize ?? 230; + const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; + const marks = breakValues.map((size, index) => { + return { + value: index + }; + }); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + import_components19.RangeControl, + { + __next40pxDefaultSize: true, + showTooltip: false, + label: (0, import_i18n19.__)("Preview size"), + value: previewSizeToUse, + min: 0, + max: breakValues.length - 1, + withInputField: false, + onChange: (value = 0) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + previewSize: breakValues[value].value + } + }); + }, + step: 1, + marks + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs +var import_components20 = __toESM(require_components(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); +var import_element23 = __toESM(require_element(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element23.useContext)(dataviews_context_default); + const view = context.view; + return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)( + import_components20.__experimentalToggleGroupControl, + { + size: "__unstable-large", + label: (0, import_i18n20.__)("Density"), + value: view.layout?.density || "balanced", + onChange: (value) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + density: value + } + }); + }, + isBlock: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components20.__experimentalToggleGroupControlOption, + { + value: "comfortable", + label: (0, import_i18n20._x)( + "Comfortable", + "Density option for DataView layout" + ) + }, + "comfortable" + ), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components20.__experimentalToggleGroupControlOption, + { + value: "balanced", + label: (0, import_i18n20._x)("Balanced", "Density option for DataView layout") + }, + "balanced" + ), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components20.__experimentalToggleGroupControlOption, + { + value: "compact", + label: (0, import_i18n20._x)("Compact", "Density option for DataView layout") + }, + "compact" + ) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var VIEW_LAYOUTS = [ + { + type: LAYOUT_TABLE, + label: (0, import_i18n21.__)("Table"), + component: table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_GRID, + label: (0, import_i18n21.__)("Grid"), + component: grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker + }, + { + type: LAYOUT_LIST, + label: (0, import_i18n21.__)("List"), + component: ViewList, + icon: (0, import_i18n21.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_ACTIVITY, + label: (0, import_i18n21.__)("Activity"), + component: ViewActivity, + icon: scheduled_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_PICKER_GRID, + label: (0, import_i18n21.__)("Grid"), + component: picker_grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker, + isPicker: true + }, + { + type: LAYOUT_PICKER_TABLE, + label: (0, import_i18n21.__)("Table"), + component: picker_table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker, + isPicker: true + } +]; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_element31 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_components23 = __toESM(require_components(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); +var import_element28 = __toESM(require_element(), 1); + +// node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp2.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b2)) { + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js +var __defProp3 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __hasOwnProp3 = Object.prototype.hasOwnProperty; +var __propIsEnum2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues2 = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp3.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + if (__getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(b2)) { + if (__propIsEnum2.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps2 = (a2, b2) => __defProps2(a2, __getOwnPropDescs2(b2)); +var __objRest2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js +function noop(..._) { +} +function applyState(argument, currentValue) { + if (isUpdater(argument)) { + const value = isLazyValue(currentValue) ? currentValue() : currentValue; + return argument(value); + } + return argument; +} +function isUpdater(argument) { + return typeof argument === "function"; +} +function isLazyValue(value) { + return typeof value === "function"; +} +function hasOwnProperty(object, prop) { + if (typeof Object.hasOwn === "function") { + return Object.hasOwn(object, prop); + } + return Object.prototype.hasOwnProperty.call(object, prop); +} +function chain(...fns) { + return (...args) => { + for (const fn of fns) { + if (typeof fn === "function") { + fn(...args); + } + } + }; +} +function normalizeString(str) { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); +} +function omit2(object, keys) { + const result = __spreadValues2({}, object); + for (const key of keys) { + if (hasOwnProperty(result, key)) { + delete result[key]; + } + } + return result; +} +function pick(object, paths) { + const result = {}; + for (const key of paths) { + if (hasOwnProperty(object, key)) { + result[key] = object[key]; + } + } + return result; +} +function identity(value) { + return value; +} +function invariant(condition, message2) { + if (condition) return; + if (typeof message2 !== "string") throw new Error("Invariant failed"); + throw new Error(message2); +} +function getKeys(obj) { + return Object.keys(obj); +} +function isFalsyBooleanCallback(booleanOrCallback, ...args) { + const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; + if (result == null) return false; + return !result; +} +function disabledFromProps(props) { + return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; +} +function removeUndefinedValues(obj) { + const result = {}; + for (const key in obj) { + if (obj[key] !== void 0) { + result[key] = obj[key]; + } + } + return result; +} +function defaultValue(...values) { + for (const value of values) { + if (value !== void 0) return value; + } + return void 0; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js +var import_react4 = __toESM(require_react(), 1); +function setRef(ref, value) { + if (typeof ref === "function") { + ref(value); + } else if (ref) { + ref.current = value; + } +} +function isValidElementWithRef(element) { + if (!element) return false; + if (!(0, import_react4.isValidElement)(element)) return false; + if ("ref" in element.props) return true; + if ("ref" in element) return true; + return false; +} +function getRefProperty(element) { + if (!isValidElementWithRef(element)) return null; + const props = __spreadValues({}, element.props); + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = __spreadValues({}, base); + for (const key in overrides) { + if (!hasOwnProperty(overrides, key)) continue; + if (key === "className") { + const prop = "className"; + props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; + continue; + } + if (key === "style") { + const prop = "style"; + props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; + continue; + } + const overrideValue = overrides[key]; + if (typeof overrideValue === "function" && key.startsWith("on")) { + const baseValue = base[key]; + if (typeof baseValue === "function") { + props[key] = (...args) => { + overrideValue(...args); + baseValue(...args); + }; + continue; + } + } + props[key] = overrideValue; + } + return props; +} + +// node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js +var canUseDOM = checkIsBrowser(); +function checkIsBrowser() { + var _a; + return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); +} +function getDocument(node) { + if (!node) return document; + if ("self" in node) return node.document; + return node.ownerDocument || document; +} +function getActiveElement(node, activeDescendant = false) { + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && activeElement.contentDocument) { + return getActiveElement( + activeElement.contentDocument.body, + activeDescendant + ); + } + if (activeDescendant) { + const id = activeElement.getAttribute("aria-activedescendant"); + if (id) { + const element = getDocument(activeElement).getElementById(id); + if (element) { + return element; + } + } + } + return activeElement; +} +function contains(parent, child) { + return parent === child || parent.contains(child); +} +function isFrame(element) { + return element.tagName === "IFRAME"; +} +function isButton(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "button") return true; + if (tagName === "input" && element.type) { + return buttonInputTypes.indexOf(element.type) !== -1; + } + return false; +} +var buttonInputTypes = [ + "button", + "color", + "file", + "image", + "reset", + "submit" +]; +function isVisible(element) { + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + const htmlElement = element; + return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; +} +function isTextField(element) { + try { + const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; + const isTextArea = element.tagName === "TEXTAREA"; + return isTextInput || isTextArea || false; + } catch (error) { + return false; + } +} +function isTextbox(element) { + return element.isContentEditable || isTextField(element); +} +function getTextboxValue(element) { + if (isTextField(element)) { + return element.value; + } + if (element.isContentEditable) { + const range = getDocument(element).createRange(); + range.selectNodeContents(element); + return range.toString(); + } + return ""; +} +function getTextboxSelection(element) { + let start = 0; + let end = 0; + if (isTextField(element)) { + start = element.selectionStart || 0; + end = element.selectionEnd || 0; + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { + const range = selection.getRangeAt(0); + const nextRange = range.cloneRange(); + nextRange.selectNodeContents(element); + nextRange.setEnd(range.startContainer, range.startOffset); + start = nextRange.toString().length; + nextRange.setEnd(range.endContainer, range.endOffset); + end = nextRange.toString().length; + } + } + return { start, end }; +} +function getPopupRole(element, fallback) { + const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; + const role = element == null ? void 0 : element.getAttribute("role"); + if (role && allowedPopupRoles.indexOf(role) !== -1) { + return role; + } + return fallback; +} +function getScrollingElement(element) { + if (!element) return null; + const isScrollableOverflow = (overflow) => { + if (overflow === "auto") return true; + if (overflow === "scroll") return true; + return false; + }; + if (element.clientHeight && element.scrollHeight > element.clientHeight) { + const { overflowY } = getComputedStyle(element); + if (isScrollableOverflow(overflowY)) return element; + } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { + const { overflowX } = getComputedStyle(element); + if (isScrollableOverflow(overflowX)) return element; + } + return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; +} +function setSelectionRange(element, ...args) { + if (/text|search|password|tel|url/i.test(element.type)) { + element.setSelectionRange(...args); + } +} +function sortBasedOnDOMPosition(items, getElement) { + const pairs = items.map((item, index) => [index, item]); + let isOrderDifferent = false; + pairs.sort(([indexA, a2], [indexB, b2]) => { + const elementA = getElement(a2); + const elementB = getElement(b2); + if (elementA === elementB) return 0; + if (!elementA || !elementB) return 0; + if (isElementPreceding(elementA, elementB)) { + if (indexA > indexB) { + isOrderDifferent = true; + } + return -1; + } + if (indexA < indexB) { + isOrderDifferent = true; + } + return 1; + }); + if (isOrderDifferent) { + return pairs.map(([_, item]) => item); + } + return items; +} +function isElementPreceding(a2, b2) { + return Boolean( + b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING + ); +} + +// node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js +function isTouchDevice() { + return canUseDOM && !!navigator.maxTouchPoints; +} +function isApple() { + if (!canUseDOM) return false; + return /mac|iphone|ipad|ipod/i.test(navigator.platform); +} +function isSafari() { + return canUseDOM && isApple() && /apple/i.test(navigator.vendor); +} +function isFirefox() { + return canUseDOM && /firefox\//i.test(navigator.userAgent); +} + +// node_modules/@ariakit/core/esm/utils/events.js +function isPortalEvent(event) { + return Boolean( + event.currentTarget && !contains(event.currentTarget, event.target) + ); +} +function isSelfTarget(event) { + return event.target === event.currentTarget; +} +function isOpeningInNewTab(event) { + const element = event.currentTarget; + if (!element) return false; + const isAppleDevice = isApple(); + if (isAppleDevice && !event.metaKey) return false; + if (!isAppleDevice && !event.ctrlKey) return false; + const tagName = element.tagName.toLowerCase(); + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function isDownloading(event) { + const element = event.currentTarget; + if (!element) return false; + const tagName = element.tagName.toLowerCase(); + if (!event.altKey) return false; + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function fireBlurEvent(element, eventInit) { + const event = new FocusEvent("blur", eventInit); + const defaultAllowed = element.dispatchEvent(event); + const bubbleInit = __spreadProps2(__spreadValues2({}, eventInit), { bubbles: true }); + element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); + return defaultAllowed; +} +function fireKeyboardEvent(element, type, eventInit) { + const event = new KeyboardEvent(type, eventInit); + return element.dispatchEvent(event); +} +function fireClickEvent(element, eventInit) { + const event = new MouseEvent("click", eventInit); + return element.dispatchEvent(event); +} +function isFocusEventOutside(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function queueBeforeEvent(element, type, callback, timeout) { + const createTimer = (callback2) => { + if (timeout) { + const timerId2 = setTimeout(callback2, timeout); + return () => clearTimeout(timerId2); + } + const timerId = requestAnimationFrame(callback2); + return () => cancelAnimationFrame(timerId); + }; + const cancelTimer = createTimer(() => { + element.removeEventListener(type, callSync, true); + callback(); + }); + const callSync = () => { + cancelTimer(); + callback(); + }; + element.addEventListener(type, callSync, { once: true, capture: true }); + return cancelTimer; +} +function addGlobalEventListener(type, listener, options, scope = window) { + const children = []; + try { + scope.document.addEventListener(type, listener, options); + for (const frame of Array.from(scope.frames)) { + children.push(addGlobalEventListener(type, listener, options, frame)); + } + } catch (e2) { + } + const removeEventListener = () => { + try { + scope.document.removeEventListener(type, listener, options); + } catch (e2) { + } + for (const remove of children) { + remove(); + } + }; + return removeEventListener; +} + +// node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js +var import_react5 = __toESM(require_react(), 1); +var React6 = __toESM(require_react(), 1); +var _React = __spreadValues({}, React6); +var useReactId = _React.useId; +var useReactDeferredValue = _React.useDeferredValue; +var useReactInsertionEffect = _React.useInsertionEffect; +var useSafeLayoutEffect = canUseDOM ? import_react5.useLayoutEffect : import_react5.useEffect; +function useInitialValue(value) { + const [initialValue] = (0, import_react5.useState)(value); + return initialValue; +} +function useLiveRef(value) { + const ref = (0, import_react5.useRef)(value); + useSafeLayoutEffect(() => { + ref.current = value; + }); + return ref; +} +function useEvent(callback) { + const ref = (0, import_react5.useRef)(() => { + throw new Error("Cannot call an event handler while rendering."); + }); + if (useReactInsertionEffect) { + useReactInsertionEffect(() => { + ref.current = callback; + }); + } else { + ref.current = callback; + } + return (0, import_react5.useCallback)((...args) => { + var _a; + return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); + }, []); +} +function useTransactionState(callback) { + const [state, setState] = (0, import_react5.useState)(null); + useSafeLayoutEffect(() => { + if (state == null) return; + if (!callback) return; + let prevState = null; + callback((prev) => { + prevState = prev; + return state; + }); + return () => { + callback(prevState); + }; + }, [state, callback]); + return [state, setState]; +} +function useMergeRefs(...refs) { + return (0, import_react5.useMemo)(() => { + if (!refs.some(Boolean)) return; + return (value) => { + for (const ref of refs) { + setRef(ref, value); + } + }; + }, refs); +} +function useId3(defaultId) { + if (useReactId) { + const reactId = useReactId(); + if (defaultId) return defaultId; + return reactId; + } + const [id, setId] = (0, import_react5.useState)(defaultId); + useSafeLayoutEffect(() => { + if (defaultId || id) return; + const random = Math.random().toString(36).slice(2, 8); + setId(`id-${random}`); + }, [defaultId, id]); + return defaultId || id; +} +function useTagName(refOrElement, type) { + const stringOrUndefined = (type2) => { + if (typeof type2 !== "string") return; + return type2; + }; + const [tagName, setTagName] = (0, import_react5.useState)(() => stringOrUndefined(type)); + useSafeLayoutEffect(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); + }, [refOrElement, type]); + return tagName; +} +function useAttribute(refOrElement, attributeName, defaultValue2) { + const initialValue = useInitialValue(defaultValue2); + const [attribute, setAttribute] = (0, import_react5.useState)(initialValue); + (0, import_react5.useEffect)(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + if (!element) return; + const callback = () => { + const value = element.getAttribute(attributeName); + setAttribute(value == null ? initialValue : value); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { attributeFilter: [attributeName] }); + callback(); + return () => observer.disconnect(); + }, [refOrElement, attributeName, initialValue]); + return attribute; +} +function useUpdateEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + (0, import_react5.useEffect)(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + (0, import_react5.useEffect)( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useUpdateLayoutEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + useSafeLayoutEffect(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + useSafeLayoutEffect( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useForceUpdate() { + return (0, import_react5.useReducer)(() => [], []); +} +function useBooleanEvent(booleanOrCallback) { + return useEvent( + typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback + ); +} +function useWrapElement(props, callback, deps = []) { + const wrapElement = (0, import_react5.useCallback)( + (element) => { + if (props.wrapElement) { + element = props.wrapElement(element); + } + return callback(element); + }, + [...deps, props.wrapElement] + ); + return __spreadProps(__spreadValues({}, props), { wrapElement }); +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, __spreadProps(__spreadValues({}, parent), { [key]: value })); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + }, []); + const isMouseMoving = useEvent(() => mouseMoving); + return isMouseMoving; +} +var mouseMoving = false; +var previousScreenX = 0; +var previousScreenY = 0; +function hasMouseMovement(event) { + const movementX = event.movementX || event.screenX - previousScreenX; + const movementY = event.movementY || event.screenY - previousScreenY; + previousScreenX = event.screenX; + previousScreenY = event.screenY; + return movementX || movementY || false; +} +function setMouseMoving(event) { + if (!hasMouseMovement(event)) return; + mouseMoving = true; +} +function resetMouseMoving() { + mouseMoving = false; +} + +// node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef((props, ref) => render4(__spreadProps(__spreadValues({}, props), { ref }))); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const _a = props, { wrapElement, render: render4 } = _a, rest = __objRest(_a, ["wrapElement", "render"]); + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = __spreadProps(__spreadValues({}, render4.props), { ref: mergedRef }); + element = React7.cloneElement(render4, mergeProps2(rest, renderProps)); + } else if (render4) { + element = render4(rest); + } else { + element = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Type, __spreadValues({}, rest)); + } + if (wrapElement) { + return wrapElement(element); + } + return element; +} +function createHook(useProps) { + const useRole = (props = {}) => { + return useProps(props); + }; + useRole.displayName = useProps.name; + return useRole; +} +function createStoreContext(providers = [], scopedProviders = []) { + const context = React7.createContext(void 0); + const scopedContext = React7.createContext(void 0); + const useContext28 = () => React7.useContext(context); + const useScopedContext = (onlyScoped = false) => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (onlyScoped) return scoped; + return scoped || store; + }; + const useProviderContext = () => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (scoped && scoped === store) return; + return store; + }; + const ContextProvider = (props) => { + return providers.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(context.Provider, __spreadValues({}, props)) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(scopedContext.Provider, __spreadValues({}, props)) + ) })); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js +var ctx = createStoreContext(); +var useCollectionContext = ctx.useContext; +var useCollectionScopedContext = ctx.useScopedContext; +var useCollectionProviderContext = ctx.useProviderContext; +var CollectionContextProvider = ctx.ContextProvider; +var CollectionScopedContextProvider = ctx.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js +var import_react6 = __toESM(require_react(), 1); +var ctx2 = createStoreContext( + [CollectionContextProvider], + [CollectionScopedContextProvider] +); +var useCompositeContext = ctx2.useContext; +var useCompositeScopedContext = ctx2.useScopedContext; +var useCompositeProviderContext = ctx2.useProviderContext; +var CompositeContextProvider = ctx2.ContextProvider; +var CompositeScopedContextProvider = ctx2.ScopedContextProvider; +var CompositeItemContext = (0, import_react6.createContext)( + void 0 +); +var CompositeRowContext = (0, import_react6.createContext)( + void 0 +); + +// node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js +var import_react7 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react7.createContext)(null); +var TagRemoveIdContext = (0, import_react7.createContext)( + null +); +var ctx3 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx3.useContext; +var useTagScopedContext = ctx3.useScopedContext; +var useTagProviderContext = ctx3.useProviderContext; +var TagContextProvider = ctx3.ContextProvider; +var TagScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js +function getInternal(store, key) { + const internals = store.__unstableInternals; + invariant(internals, "Invalid store"); + return internals[key]; +} +function createStore(initialState, ...stores) { + let state = initialState; + let prevStateBatch = state; + let lastUpdate = /* @__PURE__ */ Symbol(); + let destroy = noop; + const instances = /* @__PURE__ */ new Set(); + const updatedKeys = /* @__PURE__ */ new Set(); + const setups = /* @__PURE__ */ new Set(); + const listeners = /* @__PURE__ */ new Set(); + const batchListeners = /* @__PURE__ */ new Set(); + const disposables = /* @__PURE__ */ new WeakMap(); + const listenerKeys = /* @__PURE__ */ new WeakMap(); + const storeSetup = (callback) => { + setups.add(callback); + return () => setups.delete(callback); + }; + const storeInit = () => { + const initialized = instances.size; + const instance = /* @__PURE__ */ Symbol(); + instances.add(instance); + const maybeDestroy = () => { + instances.delete(instance); + if (instances.size) return; + destroy(); + }; + if (initialized) return maybeDestroy; + const desyncs = getKeys(state).map( + (key) => chain( + ...stores.map((store) => { + var _a; + const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); + if (!storeState) return; + if (!hasOwnProperty(storeState, key)) return; + return sync(store, [key], (state2) => { + setState( + key, + state2[key], + // @ts-expect-error - Not public API. This is just to prevent + // infinite loops. + true + ); + }); + }) + ) + ); + const teardowns = []; + for (const setup2 of setups) { + teardowns.push(setup2()); + } + const cleanups = stores.map(init); + destroy = chain(...desyncs, ...teardowns, ...cleanups); + return maybeDestroy; + }; + const sub = (keys, listener, set = listeners) => { + set.add(listener); + listenerKeys.set(listener, keys); + return () => { + var _a; + (_a = disposables.get(listener)) == null ? void 0 : _a(); + disposables.delete(listener); + listenerKeys.delete(listener); + set.delete(listener); + }; + }; + const storeSubscribe = (keys, listener) => sub(keys, listener); + const storeSync = (keys, listener) => { + disposables.set(listener, listener(state, state)); + return sub(keys, listener); + }; + const storeBatch = (keys, listener) => { + disposables.set(listener, listener(state, prevStateBatch)); + return sub(keys, listener, batchListeners); + }; + const storePick = (keys) => createStore(pick(state, keys), finalStore); + const storeOmit = (keys) => createStore(omit2(state, keys), finalStore); + const getState = () => state; + const setState = (key, value, fromStores = false) => { + var _a; + if (!hasOwnProperty(state, key)) return; + const nextValue = applyState(value, state[key]); + if (nextValue === state[key]) return; + if (!fromStores) { + for (const store of stores) { + (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); + } + } + const prevState = state; + state = __spreadProps2(__spreadValues2({}, state), { [key]: nextValue }); + const thisUpdate = /* @__PURE__ */ Symbol(); + lastUpdate = thisUpdate; + updatedKeys.add(key); + const run = (listener, prev, uKeys) => { + var _a2; + const keys = listenerKeys.get(listener); + const updated = (k) => uKeys ? uKeys.has(k) : k === key; + if (!keys || keys.some(updated)) { + (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); + disposables.set(listener, listener(state, prev)); + } + }; + for (const listener of listeners) { + run(listener, prevState); + } + queueMicrotask(() => { + if (lastUpdate !== thisUpdate) return; + const snapshot = state; + for (const listener of batchListeners) { + run(listener, prevStateBatch, updatedKeys); + } + prevStateBatch = snapshot; + updatedKeys.clear(); + }); + }; + const finalStore = { + getState, + setState, + __unstableInternals: { + setup: storeSetup, + init: storeInit, + subscribe: storeSubscribe, + sync: storeSync, + batch: storeBatch, + pick: storePick, + omit: storeOmit + } + }; + return finalStore; +} +function setup(store, ...args) { + if (!store) return; + return getInternal(store, "setup")(...args); +} +function init(store, ...args) { + if (!store) return; + return getInternal(store, "init")(...args); +} +function subscribe(store, ...args) { + if (!store) return; + return getInternal(store, "subscribe")(...args); +} +function sync(store, ...args) { + if (!store) return; + return getInternal(store, "sync")(...args); +} +function batch(store, ...args) { + if (!store) return; + return getInternal(store, "batch")(...args); +} +function omit22(store, ...args) { + if (!store) return; + return getInternal(store, "omit")(...args); +} +function pick2(store, ...args) { + if (!store) return; + return getInternal(store, "pick")(...args); +} +function mergeStore(...stores) { + const initialState = stores.reduce((state, store2) => { + var _a; + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (!nextState) return state; + return Object.assign(state, nextState); + }, {}); + const store = createStore(initialState, ...stores); + return Object.assign({}, ...stores, store); +} +function throwOnConflictingProps(props, store) { + if (false) return; + if (!store) return; + const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { + var _a; + const stateKey = key.replace("default", ""); + return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; + }); + if (!defaultKeys.length) return; + const storeState = store.getState(); + const conflictingProps = defaultKeys.filter( + (key) => hasOwnProperty(storeState, key) + ); + if (!conflictingProps.length) return; + throw new Error( + `Passing a store prop in conjunction with a default state is not supported. + +const store = useSelectStore(); + + ^ ^ + +Instead, pass the default state to the topmost store: + +const store = useSelectStore({ defaultValue: "Apple" }); + + +See https://github.com/ariakit/ariakit/pull/2745 for more details. + +If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit +` + ); +} + +// node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js +var React8 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var { useSyncExternalStore } = import_shim.default; +var noopSubscribe = () => () => { +}; +function useStoreState(store, keyOrSelector = identity) { + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const key = typeof keyOrSelector === "string" ? keyOrSelector : null; + const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; + const state = store == null ? void 0 : store.getState(); + if (selector2) return selector2(state); + if (!state) return; + if (!key) return; + if (!hasOwnProperty(state, key)) return; + return state[key]; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreStateObject(store, object) { + const objRef = React8.useRef( + {} + ); + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const state = store == null ? void 0 : store.getState(); + let updated = false; + const obj = objRef.current; + for (const prop in object) { + const keyOrSelector = object[prop]; + if (typeof keyOrSelector === "function") { + const value = keyOrSelector(state); + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + if (typeof keyOrSelector === "string") { + if (!state) continue; + if (!hasOwnProperty(state, keyOrSelector)) continue; + const value = state[keyOrSelector]; + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + } + if (updated) { + objRef.current = __spreadValues({}, obj); + } + return objRef.current; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreProps(store, props, key, setKey) { + const value = hasOwnProperty(props, key) ? props[key] : void 0; + const setValue = setKey ? props[setKey] : void 0; + const propsRef = useLiveRef({ value, setValue }); + useSafeLayoutEffect(() => { + return sync(store, [key], (state, prev) => { + const { value: value2, setValue: setValue2 } = propsRef.current; + if (!setValue2) return; + if (state[key] === prev[key]) return; + if (state[key] === value2) return; + setValue2(state[key]); + }); + }, [store, key]); + useSafeLayoutEffect(() => { + if (value === void 0) return; + store.setState(key, value); + return batch(store, [key], () => { + if (value === void 0) return; + store.setState(key, value); + }); + }); +} +function useStore(createStore2, props) { + const [store, setStore] = React8.useState(() => createStore2(props)); + useSafeLayoutEffect(() => init(store), [store]); + const useState24 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => __spreadProps(__spreadValues({}, store), { useState: useState24 }), + [store, useState24] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2(__spreadValues(__spreadValues({}, props), store2.getState()))); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js +function getCommonParent(items) { + var _a; + const firstItem = items.find((item) => !!item.element); + const lastItem = [...items].reverse().find((item) => !!item.element); + let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; + while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { + const parent = parentElement; + if (lastItem && parent.contains(lastItem.element)) { + return parentElement; + } + parentElement = parentElement.parentElement; + } + return getDocument(parentElement).body; +} +function getPrivateStore(store) { + return store == null ? void 0 : store.__unstablePrivateStore; +} +function createCollectionStore(props = {}) { + var _a; + throwOnConflictingProps(props, props.store); + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const items = defaultValue( + props.items, + syncState == null ? void 0 : syncState.items, + props.defaultItems, + [] + ); + const itemsMap = new Map(items.map((item) => [item.id, item])); + const initialState = { + items, + renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) + }; + const syncPrivateStore = getPrivateStore(props.store); + const privateStore = createStore( + { items, renderedItems: initialState.renderedItems }, + syncPrivateStore + ); + const collection = createStore(initialState, props.store); + const sortItems = (renderedItems) => { + const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); + privateStore.setState("renderedItems", sortedItems); + collection.setState("renderedItems", sortedItems); + }; + setup(collection, () => init(privateStore)); + setup(privateStore, () => { + return batch(privateStore, ["items"], (state) => { + collection.setState("items", state.items); + }); + }); + setup(privateStore, () => { + return batch(privateStore, ["renderedItems"], (state) => { + let firstRun = true; + let raf = requestAnimationFrame(() => { + const { renderedItems } = collection.getState(); + if (state.renderedItems === renderedItems) return; + sortItems(state.renderedItems); + }); + if (typeof IntersectionObserver !== "function") { + return () => cancelAnimationFrame(raf); + } + const ioCallback = () => { + if (firstRun) { + firstRun = false; + return; + } + cancelAnimationFrame(raf); + raf = requestAnimationFrame(() => sortItems(state.renderedItems)); + }; + const root = getCommonParent(state.renderedItems); + const observer = new IntersectionObserver(ioCallback, { root }); + for (const item of state.renderedItems) { + if (!item.element) continue; + observer.observe(item.element); + } + return () => { + cancelAnimationFrame(raf); + observer.disconnect(); + }; + }); + }); + const mergeItem = (item, setItems, canDeleteFromMap = false) => { + let prevItem; + setItems((items2) => { + const index = items2.findIndex(({ id }) => id === item.id); + const nextItems = items2.slice(); + if (index !== -1) { + prevItem = items2[index]; + const nextItem = __spreadValues2(__spreadValues2({}, prevItem), item); + nextItems[index] = nextItem; + itemsMap.set(item.id, nextItem); + } else { + nextItems.push(item); + itemsMap.set(item.id, item); + } + return nextItems; + }); + const unmergeItem = () => { + setItems((items2) => { + if (!prevItem) { + if (canDeleteFromMap) { + itemsMap.delete(item.id); + } + return items2.filter(({ id }) => id !== item.id); + } + const index = items2.findIndex(({ id }) => id === item.id); + if (index === -1) return items2; + const nextItems = items2.slice(); + nextItems[index] = prevItem; + itemsMap.set(item.id, prevItem); + return nextItems; + }); + }; + return unmergeItem; + }; + const registerItem = (item) => mergeItem( + item, + (getItems) => privateStore.setState("items", getItems), + true + ); + return __spreadProps2(__spreadValues2({}, collection), { + registerItem, + renderItem: (item) => chain( + registerItem(item), + mergeItem( + item, + (getItems) => privateStore.setState("renderedItems", getItems) + ) + ), + item: (id) => { + if (!id) return null; + let item = itemsMap.get(id); + if (!item) { + const { items: items2 } = privateStore.getState(); + item = items2.find((item2) => item2.id === id); + if (item) { + itemsMap.set(id, item); + } + } + return item || null; + }, + // @ts-expect-error Internal + __unstablePrivateStore: privateStore + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js +function toArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return typeof arg !== "undefined" ? [arg] : []; +} +function flatten2DArray(array) { + const flattened = []; + for (const row of array) { + flattened.push(...row); + } + return flattened; +} +function reverseArray(array) { + return array.slice().reverse(); +} + +// node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItems(items, excludeId) { + return items.filter((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getItemsInRow(items, rowId) { + return items.filter((item) => item.rowId === rowId); +} +function flipItems(items, activeId, shouldInsertNullItem = false) { + const index = items.findIndex((item) => item.id === activeId); + return [ + ...items.slice(index + 1), + ...shouldInsertNullItem ? [NULL_ITEM] : [], + ...items.slice(0, index) + ]; +} +function groupItemsByRows(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function getMaxRowLength(array) { + let maxLength = 0; + for (const { length } of array) { + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} +function createEmptyItem(rowId) { + return { + id: "__EMPTY_ITEM__", + disabled: true, + rowId + }; +} +function normalizeRows(rows, activeId, focusShift) { + const maxLength = getMaxRowLength(rows); + for (const row of rows) { + for (let i2 = 0; i2 < maxLength; i2 += 1) { + const item = row[i2]; + if (!item || focusShift && item.disabled) { + const isFirst = i2 === 0; + const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i2 - 1]; + row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); + } + } + } + return rows; +} +function verticalizeItems(items) { + const rows = groupItemsByRows(items); + const maxLength = getMaxRowLength(rows); + const verticalized = []; + for (let i2 = 0; i2 < maxLength; i2 += 1) { + for (const row of rows) { + const item = row[i2]; + if (item) { + verticalized.push(__spreadProps2(__spreadValues2({}, item), { + // If there's no rowId, it means that it's not a grid composite, but + // a single row instead. So, instead of verticalizing it, that is, + // assigning a different rowId based on the column index, we keep it + // undefined so they will be part of the same row. This is useful + // when using up/down on one-dimensional composites. + rowId: item.rowId ? `${i2}` : void 0 + })); + } + } + } + return verticalized; +} +function createCompositeStore(props = {}) { + var _a; + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const collection = createCollectionStore(props); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId + ); + const initialState = __spreadProps2(__spreadValues2({}, collection.getState()), { + id: defaultValue( + props.id, + syncState == null ? void 0 : syncState.id, + `id-${Math.random().toString(36).slice(2, 8)}` + ), + activeId, + baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + activeId === null + ), + moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "both" + ), + rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + false + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), + focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) + }); + const composite = createStore(initialState, collection, props.store); + setup( + composite, + () => sync(composite, ["renderedItems", "activeId"], (state) => { + composite.setState("activeId", (activeId2) => { + var _a2; + if (activeId2 !== void 0) return activeId2; + return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; + }); + }) + ); + const getNextId = (direction = "next", options = {}) => { + var _a2, _b; + const defaultState = composite.getState(); + const { + skip = 0, + activeId: activeId2 = defaultState.activeId, + focusShift = defaultState.focusShift, + focusLoop = defaultState.focusLoop, + focusWrap = defaultState.focusWrap, + includesBaseElement = defaultState.includesBaseElement, + renderedItems = defaultState.renderedItems, + rtl = defaultState.rtl + } = options; + const isVerticalDirection = direction === "up" || direction === "down"; + const isNextDirection = direction === "next" || direction === "down"; + const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; + const canShift = focusShift && !skip; + let items = !isVerticalDirection ? renderedItems : flatten2DArray( + normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id; + } + const isGrid2 = items.some((item) => item.rowId); + const activeIndex = items.indexOf(activeItem); + const nextItems = items.slice(activeIndex + 1); + const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); + if (skip) { + const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); + const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. + nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; + return nextItem2 == null ? void 0 : nextItem2.id; + } + const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); + const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); + const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; + if (canLoop) { + const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); + const sortedItems = flipItems(loopItems, activeId2, hasNullItem); + const nextItem2 = findFirstEnabledItem(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem( + // We can use nextItems, which contains all the next items, including + // items from other rows, to wrap between rows. However, if there is a + // null item (the composite container), we'll only use the next items in + // the row. So moving next from the last item will focus on the + // composite container. On grid composites, horizontal navigation never + // focuses on the composite container, only vertical. + hasNullItem ? nextItemsInRow : nextItems, + activeId2 + ); + const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; + return nextId; + } + const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return __spreadProps2(__spreadValues2(__spreadValues2({}, collection), composite), { + setBaseElement: (element) => composite.setState("baseElement", element), + setActiveId: (id) => composite.setState("activeId", id), + move: (id) => { + if (id === void 0) return; + composite.setState("activeId", id); + composite.setState("moves", (moves) => moves + 1); + }, + first: () => { + var _a2; + return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; + }, + next: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("next", options); + }, + previous: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("previous", options); + }, + down: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("down", options); + }, + up: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("up", options); + } + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return __spreadValues({ id }, props); +} +function useCompositeStoreProps(store, update2, props) { + store = useCollectionStoreProps(store, update2, props); + useStoreProps(store, props, "activeId", "setActiveId"); + useStoreProps(store, props, "includesBaseElement"); + useStoreProps(store, props, "virtualFocus"); + useStoreProps(store, props, "orientation"); + useStoreProps(store, props, "rtl"); + useStoreProps(store, props, "focusLoop"); + useStoreProps(store, props, "focusWrap"); + useStoreProps(store, props, "focusShift"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js +function createDisclosureStore(props = {}) { + const store = mergeStore( + props.store, + omit22(props.disclosure, ["contentElement", "disclosureElement"]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const open = defaultValue( + props.open, + syncState == null ? void 0 : syncState.open, + props.defaultOpen, + false + ); + const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); + const initialState = { + open, + animated, + animating: !!animated && open, + mounted: open, + contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), + disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) + }; + const disclosure = createStore(initialState, store); + setup( + disclosure, + () => sync(disclosure, ["animated", "animating"], (state) => { + if (state.animated) return; + disclosure.setState("animating", false); + }) + ); + setup( + disclosure, + () => subscribe(disclosure, ["open"], () => { + if (!disclosure.getState().animated) return; + disclosure.setState("animating", true); + }) + ); + setup( + disclosure, + () => sync(disclosure, ["open", "animating"], (state) => { + disclosure.setState("mounted", state.open || state.animating); + }) + ); + return __spreadProps2(__spreadValues2({}, disclosure), { + disclosure: props.disclosure, + setOpen: (value) => disclosure.setState("open", value), + show: () => disclosure.setState("open", true), + hide: () => disclosure.setState("open", false), + toggle: () => disclosure.setState("open", (open2) => !open2), + stopAnimation: () => disclosure.setState("animating", false), + setContentElement: (value) => disclosure.setState("contentElement", value), + setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js +function useDisclosureStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store, props.disclosure]); + useStoreProps(store, props, "open", "setOpen"); + useStoreProps(store, props, "mounted", "setMounted"); + useStoreProps(store, props, "animated"); + return Object.assign(store, { disclosure: props.disclosure }); +} + +// node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js +function createPopoverStore(_a = {}) { + var _b = _a, { + popover: otherPopover + } = _b, props = __objRest2(_b, [ + "popover" + ]); + const store = mergeStore( + props.store, + omit22(otherPopover, [ + "arrowElement", + "anchorElement", + "contentElement", + "popoverElement", + "disclosureElement" + ]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const dialog = createDialogStore(__spreadProps2(__spreadValues2({}, props), { store })); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = __spreadProps2(__spreadValues2({}, dialog.getState()), { + placement, + currentPlacement: placement, + anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), + popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), + arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), + rendered: /* @__PURE__ */ Symbol("rendered") + }); + const popover = createStore(initialState, dialog, store); + return __spreadProps2(__spreadValues2(__spreadValues2({}, dialog), popover), { + setAnchorElement: (element) => popover.setState("anchorElement", element), + setPopoverElement: (element) => popover.setState("popoverElement", element), + setArrowElement: (element) => popover.setState("arrowElement", element), + render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore(_a = {}) { + var _b = _a, { + tag + } = _b, props = __objRest2(_b, [ + "tag" + ]); + const store = mergeStore(props.store, pick2(tag, ["value", "rtl"])); + throwOnConflictingProps(props, store); + const tagState = tag == null ? void 0 : tag.getState(); + const syncState = store == null ? void 0 : store.getState(); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId, + null + ); + const composite = createCompositeStore(__spreadProps2(__spreadValues2({}, props), { + activeId, + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + true + ), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "vertical" + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + true + ) + })); + const popover = createPopoverStore(__spreadProps2(__spreadValues2({}, props), { + placement: defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom-start" + ) + })); + const value = defaultValue( + props.value, + syncState == null ? void 0 : syncState.value, + props.defaultValue, + "" + ); + const selectedValue = defaultValue( + props.selectedValue, + syncState == null ? void 0 : syncState.selectedValue, + tagState == null ? void 0 : tagState.values, + props.defaultSelectedValue, + "" + ); + const multiSelectable = Array.isArray(selectedValue); + const initialState = __spreadProps2(__spreadValues2(__spreadValues2({}, composite.getState()), popover.getState()), { + value, + selectedValue, + resetValueOnSelect: defaultValue( + props.resetValueOnSelect, + syncState == null ? void 0 : syncState.resetValueOnSelect, + multiSelectable + ), + resetValueOnHide: defaultValue( + props.resetValueOnHide, + syncState == null ? void 0 : syncState.resetValueOnHide, + multiSelectable && !tag + ), + activeValue: syncState == null ? void 0 : syncState.activeValue + }); + const combobox = createStore(initialState, composite, popover, store); + if (isTouchSafari) { + setup( + combobox, + () => sync(combobox, ["virtualFocus"], () => { + combobox.setState("virtualFocus", false); + }) + ); + } + setup(combobox, () => { + if (!tag) return; + return chain( + sync(combobox, ["selectedValue"], (state) => { + if (!Array.isArray(state.selectedValue)) return; + tag.setValues(state.selectedValue); + }), + sync(tag, ["values"], (state) => { + combobox.setState("selectedValue", state.values); + }) + ); + }); + setup( + combobox, + () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { + if (!state.resetValueOnHide) return; + if (state.mounted) return; + combobox.setState("value", value); + }) + ); + setup( + combobox, + () => sync(combobox, ["open"], (state) => { + if (state.open) return; + combobox.setState("activeId", activeId); + combobox.setState("moves", 0); + }) + ); + setup( + combobox, + () => sync(combobox, ["moves", "activeId"], (state, prevState) => { + if (state.moves === prevState.moves) { + combobox.setState("activeValue", void 0); + } + }) + ); + setup( + combobox, + () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { + if (state.moves === prev.moves) return; + const { activeId: activeId2 } = combobox.getState(); + const activeItem = composite.item(activeId2); + combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); + }) + ); + return __spreadProps2(__spreadValues2(__spreadValues2(__spreadValues2({}, popover), composite), combobox), { + tag, + setValue: (value2) => combobox.setState("value", value2), + resetValue: () => combobox.setState("value", initialState.value), + setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = __spreadProps(__spreadValues({}, props), { + tag: props.tag !== void 0 ? props.tag : tag + }); + return useCompositeStoreOptions(props); +} +function useComboboxStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.tag]); + useStoreProps(store, props, "value", "setValue"); + useStoreProps(store, props, "selectedValue", "setSelectedValue"); + useStoreProps(store, props, "resetValueOnHide"); + useStoreProps(store, props, "resetValueOnSelect"); + return Object.assign( + useCompositeStoreProps( + usePopoverStoreProps(store, update2, props), + update2, + props + ), + { tag: props.tag } + ); +} +function useComboboxStore(props = {}) { + props = useComboboxStoreOptions(props); + const [store, update2] = useStore(createComboboxStore, props); + return useComboboxStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js +var ctx4 = createStoreContext(); +var useDisclosureContext = ctx4.useContext; +var useDisclosureScopedContext = ctx4.useScopedContext; +var useDisclosureProviderContext = ctx4.useProviderContext; +var DisclosureContextProvider = ctx4.ContextProvider; +var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js +var import_react8 = __toESM(require_react(), 1); +var ctx5 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx5.useContext; +var useDialogScopedContext = ctx5.useScopedContext; +var useDialogProviderContext = ctx5.useProviderContext; +var DialogContextProvider = ctx5.ContextProvider; +var DialogScopedContextProvider = ctx5.ScopedContextProvider; +var DialogHeadingContext = (0, import_react8.createContext)(void 0); +var DialogDescriptionContext = (0, import_react8.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js +var ctx6 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx6.useContext; +var usePopoverScopedContext = ctx6.useScopedContext; +var usePopoverProviderContext = ctx6.useProviderContext; +var PopoverContextProvider = ctx6.ContextProvider; +var PopoverScopedContextProvider = ctx6.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js +var import_react9 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react9.createContext)( + void 0 +); +var ctx7 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx7.useContext; +var useComboboxScopedContext = ctx7.useScopedContext; +var useComboboxProviderContext = ctx7.useProviderContext; +var ComboboxContextProvider = ctx7.ContextProvider; +var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react9.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react9.createContext)(false); + +// node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js +var TagName = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = usePopoverProviderContext(); + store = store || context; + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) + }); + return props; + } +); +var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { + const htmlProps = usePopoverAnchor(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js +function findFirstEnabledItem2(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItem(store, id) { + if (!id) return null; + return store.item(id) || null; +} +function groupItemsByRows2(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function selectTextField(element, collapseToEnd = false) { + if (isTextField(element)) { + element.setSelectionRange( + collapseToEnd ? element.value.length : 0, + element.value.length + ); + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + selection == null ? void 0 : selection.selectAllChildren(element); + if (collapseToEnd) { + selection == null ? void 0 : selection.collapseToEnd(); + } + } +} +var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); +function focusSilently(element) { + element[FOCUS_SILENTLY] = true; + element.focus({ preventScroll: true }); +} +function silentlyFocused(element) { + const isSilentlyFocused = element[FOCUS_SILENTLY]; + delete element[FOCUS_SILENTLY]; + return isSilentlyFocused; +} +function isItem(store, element, exclude) { + if (!element) return false; + if (element === exclude) return false; + const item = store.item(element.id); + if (!item) return false; + if (exclude && item.element === exclude) return false; + return true; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react10 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react10.createContext)(true); + +// node_modules/@ariakit/core/esm/utils/focus.js +var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; +function isFocusable(element) { + if (!element.matches(selector)) return false; + if (!isVisible(element)) return false; + if (element.closest("[inert]")) return false; + return true; +} +function getClosestFocusable(element) { + while (element && !isFocusable(element)) { + element = element.closest(selector); + } + return element || null; +} +function hasFocus(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (activeElement === element) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + return activeDescendant === element.id; +} +function hasFocusWithin(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (contains(element, activeElement)) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + if (!("id" in element)) return false; + if (activeDescendant === element.id) return true; + return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); +} +function focusIfNeeded(element) { + if (!hasFocusWithin(element) && isFocusable(element)) { + element.focus(); + } +} +function focusIntoView(element, options) { + if (!("scrollIntoView" in element)) { + element.focus(); + } else { + element.focus({ preventScroll: true }); + element.scrollIntoView(__spreadValues2({ block: "nearest", inline: "nearest" }, options)); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js +var import_react11 = __toESM(require_react(), 1); +var TagName2 = "div"; +var isSafariBrowser = isSafari(); +var alwaysFocusVisibleInputTypes = [ + "text", + "search", + "url", + "tel", + "email", + "password", + "number", + "date", + "month", + "week", + "time", + "datetime", + "datetime-local" +]; +var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); +function markSafariFocusAncestor(element, value) { + if (!element) return; + element[safariFocusAncestorSymbol] = value; +} +function isAlwaysFocusVisible(element) { + const { tagName, readOnly, type } = element; + if (tagName === "TEXTAREA" && !readOnly) return true; + if (tagName === "SELECT" && !readOnly) return true; + if (tagName === "INPUT" && !readOnly) { + return alwaysFocusVisibleInputTypes.includes(type); + } + if (element.isContentEditable) return true; + const role = element.getAttribute("role"); + if (role === "combobox" && element.dataset.name) { + return true; + } + return false; +} +function getLabels(element) { + if ("labels" in element) { + return element.labels; + } + return null; +} +function isNativeCheckboxOrRadio(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "input" && element.type) { + return element.type === "radio" || element.type === "checkbox"; + } + return false; +} +function isNativeTabbable(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; +} +function supportsDisabledAttribute(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; +} +function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { + if (!focusable) { + return tabIndexProp; + } + if (trulyDisabled) { + if (nativeTabbable && !supportsDisabled) { + return -1; + } + return; + } + if (nativeTabbable) { + return tabIndexProp; + } + return tabIndexProp || 0; +} +function useDisableEvent(onEvent, disabled) { + return useEvent((event) => { + onEvent == null ? void 0 : onEvent(event); + if (event.defaultPrevented) return; + if (disabled) { + event.stopPropagation(); + event.preventDefault(); + } + }); +} +var isKeyboardModality = true; +function onGlobalMouseDown(event) { + const target = event.target; + if (target && "hasAttribute" in target) { + if (!target.hasAttribute("data-focus-visible")) { + isKeyboardModality = false; + } + } +} +function onGlobalKeyDown(event) { + if (event.metaKey) return; + if (event.ctrlKey) return; + if (event.altKey) return; + isKeyboardModality = true; +} +var useFocusable = createHook( + function useFocusable2(_a) { + var _b = _a, { + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible + } = _b, props = __objRest(_b, [ + "focusable", + "accessibleWhenDisabled", + "autoFocus", + "onFocusVisible" + ]); + const ref = (0, import_react11.useRef)(null); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + }, [focusable]); + if (isSafariBrowser) { + (0, import_react11.useEffect)(() => { + if (!focusable) return; + const element = ref.current; + if (!element) return; + if (!isNativeCheckboxOrRadio(element)) return; + const labels = getLabels(element); + if (!labels) return; + const onMouseUp = () => queueMicrotask(() => element.focus()); + for (const label of labels) { + label.addEventListener("mouseup", onMouseUp); + } + return () => { + for (const label of labels) { + label.removeEventListener("mouseup", onMouseUp); + } + }; + }, [focusable]); + } + const disabled = focusable && disabledFromProps(props); + const trulyDisabled = !!disabled && !accessibleWhenDisabled; + const [focusVisible, setFocusVisible] = (0, import_react11.useState)(false); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (!focusVisible) return; + const element = ref.current; + if (!element) return; + if (typeof IntersectionObserver === "undefined") return; + const observer = new IntersectionObserver(() => { + if (!isFocusable(element)) { + setFocusVisible(false); + } + }); + observer.observe(element); + return () => observer.disconnect(); + }, [focusable, focusVisible]); + const onKeyPressCapture = useDisableEvent( + props.onKeyPressCapture, + disabled + ); + const onMouseDownCapture = useDisableEvent( + props.onMouseDownCapture, + disabled + ); + const onClickCapture = useDisableEvent(props.onClickCapture, disabled); + const onMouseDownProp = props.onMouseDown; + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + const element = event.currentTarget; + if (!isSafariBrowser) return; + if (isPortalEvent(event)) return; + if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; + let receivedFocus = false; + const onFocus = () => { + receivedFocus = true; + }; + const options = { capture: true, once: true }; + element.addEventListener("focusin", onFocus, options); + const focusableContainer = getClosestFocusable(element.parentElement); + markSafariFocusAncestor(focusableContainer, true); + queueBeforeEvent(element, "mouseup", () => { + element.removeEventListener("focusin", onFocus, true); + markSafariFocusAncestor(focusableContainer, false); + if (receivedFocus) return; + focusIfNeeded(element); + }); + }); + const handleFocusVisible = (event, currentTarget) => { + if (currentTarget) { + event.currentTarget = currentTarget; + } + if (!focusable) return; + const element = event.currentTarget; + if (!element) return; + if (!hasFocus(element)) return; + onFocusVisible == null ? void 0 : onFocusVisible(event); + if (event.defaultPrevented) return; + element.dataset.focusVisible = "true"; + setFocusVisible(true); + }; + const onKeyDownCaptureProp = props.onKeyDownCapture; + const onKeyDownCapture = useEvent((event) => { + onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (focusVisible) return; + if (event.metaKey) return; + if (event.altKey) return; + if (event.ctrlKey) return; + if (!isSelfTarget(event)) return; + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + queueBeforeEvent(element, "focusout", applyFocusVisible); + }); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (!isSelfTarget(event)) { + setFocusVisible(false); + return; + } + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { + queueBeforeEvent(event.target, "focusout", applyFocusVisible); + } else { + setFocusVisible(false); + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + onBlurProp == null ? void 0 : onBlurProp(event); + if (!focusable) return; + if (!isFocusEventOutside(event)) return; + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react11.useContext)(FocusableContext); + const autoFocusRef = useEvent((element) => { + if (!focusable) return; + if (!autoFocus) return; + if (!element) return; + if (!autoFocusOnShow) return; + queueMicrotask(() => { + if (hasFocus(element)) return; + if (!isFocusable(element)) return; + element.focus(); + }); + }); + const tagName = useTagName(ref); + const nativeTabbable = focusable && isNativeTabbable(tagName); + const supportsDisabled = focusable && supportsDisabledAttribute(tagName); + const styleProp = props.style; + const style = (0, import_react11.useMemo)(() => { + if (trulyDisabled) { + return __spreadValues({ pointerEvents: "none" }, styleProp); + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = __spreadProps(__spreadValues({ + "data-focus-visible": focusable && focusVisible || void 0, + "data-autofocus": autoFocus || void 0, + "aria-disabled": disabled || void 0 + }, props), { + ref: useMergeRefs(ref, autoFocusRef, props.ref), + style, + tabIndex: getTabIndex( + focusable, + trulyDisabled, + nativeTabbable, + supportsDisabled, + props.tabIndex + ), + disabled: supportsDisabled && trulyDisabled ? true : void 0, + // TODO: Test Focusable contentEditable. + contentEditable: disabled ? void 0 : props.contentEditable, + onKeyPressCapture, + onClickCapture, + onMouseDownCapture, + onMouseDown, + onKeyDownCapture, + onFocusCapture, + onBlur + }); + return removeUndefinedValues(props); + } +); +var Focusable = forwardRef22(function Focusable2(props) { + const htmlProps = useFocusable(props); + return createElement3(TagName2, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName3 = "div"; +function isGrid(items) { + return items.some((item) => !!item.rowId); +} +function isPrintableKey(event) { + const target = event.target; + if (target && !isTextField(target)) return false; + return event.key.length === 1 && !event.ctrlKey && !event.metaKey; +} +function isModifierKey(event) { + return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; +} +function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { + return useEvent((event) => { + var _a; + onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); + if (event.defaultPrevented) return; + if (event.isPropagationStopped()) return; + if (!isSelfTarget(event)) return; + if (isModifierKey(event)) return; + if (isPrintableKey(event)) return; + const state = store.getState(); + const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; + if (!activeElement) return; + const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); + const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; + if (activeElement !== previousElement) { + activeElement.focus(); + } + if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { + event.preventDefault(); + } + if (event.currentTarget.contains(activeElement)) { + event.stopPropagation(); + } + }); +} +function findFirstEnabledItemInTheLastRow(items) { + return findFirstEnabledItem2( + flatten2DArray(reverseArray(groupItemsByRows2(items))) + ); +} +function useScheduleFocus(store) { + const [scheduled, setScheduled] = (0, import_react12.useState)(false); + const schedule = (0, import_react12.useCallback)(() => setScheduled(true), []); + const activeItem = store.useState( + (state) => getEnabledItem(store, state.activeId) + ); + (0, import_react12.useEffect)(() => { + const activeElement = activeItem == null ? void 0 : activeItem.element; + if (!scheduled) return; + if (!activeElement) return; + setScheduled(false); + activeElement.focus({ preventScroll: true }); + }, [activeItem, scheduled]); + return schedule; +} +var useComposite = createHook( + function useComposite2(_a) { + var _b = _a, { + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true + } = _b, props = __objRest(_b, [ + "store", + "composite", + "focusOnMove", + "moveOnKeyPress" + ]); + const context = useCompositeProviderContext(); + store = store || context; + invariant( + store, + "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." + ); + const ref = (0, import_react12.useRef)(null); + const previousElementRef = (0, import_react12.useRef)(null); + const scheduleFocus = useScheduleFocus(store); + const moves = store.useState("moves"); + const [, setBaseElement] = useTransactionState( + composite ? store.setBaseElement : null + ); + (0, import_react12.useEffect)(() => { + var _a2; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + if (!itemElement) return; + focusIntoView(itemElement); + }, [store, moves, composite, focusOnMove]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!moves) return; + if (!composite) return; + const { baseElement, activeId: activeId2 } = store.getState(); + const isSelfAcive = activeId2 === null; + if (!isSelfAcive) return; + if (!baseElement) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (previousElement) { + fireBlurEvent(previousElement, { relatedTarget: baseElement }); + } + if (!hasFocus(baseElement)) { + baseElement.focus(); + } + }, [store, moves, composite]); + const activeId = store.useState("activeId"); + const virtualFocus = store.useState("virtualFocus"); + useSafeLayoutEffect(() => { + var _a2; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; + const relatedTarget = activeElement || getActiveElement(previousElement); + if (relatedTarget === previousElement) return; + fireBlurEvent(previousElement, { relatedTarget }); + }, [store, activeId, virtualFocus, composite]); + const onKeyDownCapture = useKeyboardEventProxy( + store, + props.onKeyDownCapture, + previousElementRef + ); + const onKeyUpCapture = useKeyboardEventProxy( + store, + props.onKeyUpCapture, + previousElementRef + ); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (!virtualFocus2) return; + const previousActiveElement = event.relatedTarget; + const isSilentlyFocused = silentlyFocused(event.currentTarget); + if (isSelfTarget(event) && isSilentlyFocused) { + event.stopPropagation(); + previousElementRef.current = previousActiveElement; + } + }); + const onFocusProp = props.onFocus; + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (!composite) return; + if (!store) return; + const { relatedTarget } = event; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (virtualFocus2) { + if (isSelfTarget(event) && !isItem(store, relatedTarget)) { + queueMicrotask(scheduleFocus); + } + } else if (isSelfTarget(event)) { + store.setActiveId(null); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + var _a2; + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); + if (!virtualFocus2) return; + const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + const nextActiveElement = event.relatedTarget; + const nextActiveElementIsItem = isItem(store, nextActiveElement); + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (isSelfTarget(event) && nextActiveElementIsItem) { + if (nextActiveElement === activeElement) { + if (previousElement && previousElement !== nextActiveElement) { + fireBlurEvent(previousElement, event); + } + } else if (activeElement) { + fireBlurEvent(activeElement, event); + } else if (previousElement) { + fireBlurEvent(previousElement, event); + } + event.stopPropagation(); + } else { + const targetIsItem = isItem(store, event.target); + if (!targetIsItem && activeElement) { + fireBlurEvent(activeElement, event); + } + } + }); + const onKeyDownProp = props.onKeyDown; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + var _a2; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; + const isVertical = orientation !== "horizontal"; + const isHorizontal = orientation !== "vertical"; + const grid = isGrid(renderedItems); + const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; + if (isHorizontalKey && isTextField(event.currentTarget)) return; + const up = () => { + if (grid) { + const item = findFirstEnabledItemInTheLastRow(renderedItems); + return item == null ? void 0 : item.id; + } + return store == null ? void 0 : store.last(); + }; + const keyMap = { + ArrowUp: (grid || isVertical) && up, + ArrowRight: (grid || isHorizontal) && store.first, + ArrowDown: (grid || isVertical) && store.first, + ArrowLeft: (grid || isHorizontal) && store.last, + Home: store.first, + End: store.last, + PageUp: store.first, + PageDown: store.last + }; + const action = keyMap[event.key]; + if (action) { + const id = action(); + if (id !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(id); + } + } + }); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a2; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; + }); + props = __spreadProps(__spreadValues({ + "aria-activedescendant": activeDescendant + }, props), { + ref: useMergeRefs(ref, setBaseElement, props.ref), + onKeyDownCapture, + onKeyUpCapture, + onFocusCapture, + onFocus, + onBlurCapture, + onKeyDown + }); + const focusable = store.useState( + (state) => composite && (state.virtualFocus || state.activeId === null) + ); + props = useFocusable(__spreadValues({ focusable }, props)); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName3, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react13 = __toESM(require_react(), 1); +var TagName4 = "input"; +function isFirstItemAutoSelected(items, activeValue, autoSelect) { + if (!autoSelect) return false; + const firstItem = items.find((item) => !item.disabled && item.value); + return (firstItem == null ? void 0 : firstItem.value) === activeValue; +} +function hasCompletionString(value, activeValue) { + if (!activeValue) return false; + if (value == null) return false; + value = normalizeString(value); + return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; +} +function isInputEvent(event) { + return event.type === "input"; +} +function isAriaAutoCompleteValue(value) { + return value === "inline" || value === "list" || value === "both" || value === "none"; +} +function getDefaultAutoSelectId(items) { + const item = items.find((item2) => { + var _a; + if (item2.disabled) return false; + return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; + }); + return item == null ? void 0 : item.id; +} +var useCombobox = createHook( + function useCombobox2(_a) { + var _b = _a, { + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list" + } = _b, props = __objRest(_b, [ + "store", + "focusable", + "autoSelect", + "getAutoSelectId", + "setValueOnChange", + "showMinLength", + "showOnChange", + "showOnMouseDown", + "showOnClick", + "showOnKeyDown", + "showOnKeyPress", + "blurActiveItemOnClick", + "setValueOnClick", + "moveOnKeyPress", + "autoComplete" + ]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react13.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react13.useRef)(false); + const composingRef = (0, import_react13.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react13.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react13.useRef)(); + (0, import_react13.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a2; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return; + } + return state.activeValue; + }); + const items = store.useState("renderedItems"); + const open = store.useState("open"); + const contentElement = store.useState("contentElement"); + const value = (0, import_react13.useMemo)(() => { + if (!inline) return storeValue; + if (!canInline) return storeValue; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (firstItemAutoSelected) { + if (hasCompletionString(storeValue, inlineActiveValue)) { + const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; + return storeValue + slice; + } + return storeValue; + } + return inlineActiveValue || storeValue; + }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); + (0, import_react13.useEffect)(() => { + const element = ref.current; + if (!element) return; + const onCompositeItemMove = () => setCanInline(true); + element.addEventListener("combobox-item-move", onCompositeItemMove); + return () => { + element.removeEventListener("combobox-item-move", onCompositeItemMove); + }; + }, []); + (0, import_react13.useEffect)(() => { + if (!inline) return; + if (!canInline) return; + if (!inlineActiveValue) return; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (!firstItemAutoSelected) return; + if (!hasCompletionString(storeValue, inlineActiveValue)) return; + let cleanup = noop; + queueMicrotask(() => { + const element = ref.current; + if (!element) return; + const { start: prevStart, end: prevEnd } = getTextboxSelection(element); + const nextStart = storeValue.length; + const nextEnd = inlineActiveValue.length; + setSelectionRange(element, nextStart, nextEnd); + cleanup = () => { + if (!hasFocus(element)) return; + const { start, end } = getTextboxSelection(element); + if (start !== nextStart) return; + if (end !== nextEnd) return; + setSelectionRange(element, prevStart, prevEnd); + }; + }); + return () => cleanup(); + }, [ + valueUpdated, + inline, + canInline, + inlineActiveValue, + items, + autoSelect, + storeValue + ]); + const scrollingElementRef = (0, import_react13.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react13.useRef)(null); + (0, import_react13.useEffect)(() => { + if (!open) return; + if (!contentElement) return; + const scrollingElement = getScrollingElement(contentElement); + if (!scrollingElement) return; + scrollingElementRef.current = scrollingElement; + const onUserScroll = () => { + canAutoSelectRef.current = false; + }; + const onScroll = () => { + if (!store) return; + if (!canAutoSelectRef.current) return; + const { activeId } = store.getState(); + if (activeId === null) return; + if (activeId === autoSelectIdRef.current) return; + canAutoSelectRef.current = false; + }; + const options = { passive: true, capture: true }; + scrollingElement.addEventListener("wheel", onUserScroll, options); + scrollingElement.addEventListener("touchmove", onUserScroll, options); + scrollingElement.addEventListener("scroll", onScroll, options); + return () => { + scrollingElement.removeEventListener("wheel", onUserScroll, true); + scrollingElement.removeEventListener("touchmove", onUserScroll, true); + scrollingElement.removeEventListener("scroll", onScroll, true); + }; + }, [open, contentElement, store]); + useSafeLayoutEffect(() => { + if (!storeValue) return; + if (composingRef.current) return; + canAutoSelectRef.current = true; + }, [storeValue]); + useSafeLayoutEffect(() => { + if (autoSelect !== "always" && open) return; + canAutoSelectRef.current = open; + }, [autoSelect, open]); + const resetValueOnSelect = store.useState("resetValueOnSelect"); + useUpdateEffect(() => { + var _a2, _b2; + const canAutoSelect = canAutoSelectRef.current; + if (!store) return; + if (!open) return; + if (!canAutoSelect && !resetValueOnSelect) return; + const { baseElement, contentElement: contentElement2, activeId } = store.getState(); + if (baseElement && !hasFocus(baseElement)) return; + if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { + const observer = new MutationObserver(forceValueUpdate); + observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); + return () => observer.disconnect(); + } + if (autoSelect && canAutoSelect) { + const userAutoSelectId = getAutoSelectIdProp(items); + const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react13.useEffect)(() => { + if (!inline) return; + const combobox = ref.current; + if (!combobox) return; + const elements = [combobox, contentElement].filter( + (value2) => !!value2 + ); + const onBlur2 = (event) => { + if (elements.every((el) => isFocusEventOutside(event, el))) { + store == null ? void 0 : store.setValue(value); + } + }; + for (const element of elements) { + element.addEventListener("focusout", onBlur2); + } + return () => { + for (const element of elements) { + element.removeEventListener("focusout", onBlur2); + } + }; + }, [inline, contentElement, store, value]); + const canShow = (event) => { + const currentTarget = event.currentTarget; + return currentTarget.value.length >= showMinLength; + }; + const onChangeProp = props.onChange; + const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); + const setValueOnChangeProp = useBooleanEvent( + // If the combobox is combined with tags, the value will be set by the tag + // input component. + setValueOnChange != null ? setValueOnChange : !store.tag + ); + const onChange = useEvent((event) => { + onChangeProp == null ? void 0 : onChangeProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const currentTarget = event.currentTarget; + const { value: value2, selectionStart, selectionEnd } = currentTarget; + const nativeEvent = event.nativeEvent; + canAutoSelectRef.current = true; + if (isInputEvent(nativeEvent)) { + if (nativeEvent.isComposing) { + canAutoSelectRef.current = false; + composingRef.current = true; + } + if (inline) { + const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; + const caretAtEnd = selectionStart === value2.length; + setCanInline(textInserted && caretAtEnd); + } + } + if (setValueOnChangeProp(event)) { + const isSameValue = value2 === store.getState().value; + store.setValue(value2); + queueMicrotask(() => { + setSelectionRange(currentTarget, selectionStart, selectionEnd); + }); + if (inline && autoSelect && isSameValue) { + forceValueUpdate(); + } + } + if (showOnChangeProp(event)) { + store.show(); + } + if (!autoSelect || !canAutoSelectRef.current) { + store.setActiveId(null); + } + }); + const onCompositionEndProp = props.onCompositionEnd; + const onCompositionEnd = useEvent((event) => { + canAutoSelectRef.current = true; + composingRef.current = false; + onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); + if (event.defaultPrevented) return; + if (!autoSelect) return; + forceValueUpdate(); + }); + const onMouseDownProp = props.onMouseDown; + const blurActiveItemOnClickProp = useBooleanEvent( + blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement) + ); + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (event.button) return; + if (event.ctrlKey) return; + if (!store) return; + if (blurActiveItemOnClickProp(event)) { + store.setActiveId(null); + } + if (setValueOnClickProp(event)) { + store.setValue(value); + } + if (showOnClickProp(event)) { + queueBeforeEvent(event.currentTarget, "mouseup", store.show); + } + }); + const onKeyDownProp = props.onKeyDown; + const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (!event.repeat) { + canAutoSelectRef.current = false; + } + if (event.defaultPrevented) return; + if (event.ctrlKey) return; + if (event.altKey) return; + if (event.shiftKey) return; + if (event.metaKey) return; + if (!store) return; + const { open: open2 } = store.getState(); + if (open2) return; + if (event.key === "ArrowUp" || event.key === "ArrowDown") { + if (showOnKeyPressProp(event)) { + event.preventDefault(); + store.show(); + } + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + canAutoSelectRef.current = false; + onBlurProp == null ? void 0 : onBlurProp(event); + if (event.defaultPrevented) return; + }); + const id = useId3(props.id); + const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; + const isActiveItem = store.useState((state) => state.activeId === null); + props = __spreadProps(__spreadValues({ + id, + role: "combobox", + "aria-autocomplete": ariaAutoComplete, + "aria-haspopup": getPopupRole(contentElement, "listbox"), + "aria-expanded": open, + "aria-controls": contentElement == null ? void 0 : contentElement.id, + "data-active-item": isActiveItem || void 0, + value + }, props), { + ref: useMergeRefs(ref, props.ref), + onChange, + onCompositionEnd, + onMouseDown, + onKeyDown, + onBlur + }); + props = useComposite(__spreadProps(__spreadValues({ + store, + focusable + }, props), { + // Enable inline autocomplete when the user moves from the combobox input + // to an item. + moveOnKeyPress: (event) => { + if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; + if (inline) setCanInline(true); + return true; + } + })); + props = usePopoverAnchor(__spreadValues({ store }, props)); + return __spreadValues({ autoComplete: "off" }, props); + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName4, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js +var import_react14 = __toESM(require_react(), 1); +var TagName5 = "button"; +function isNativeClick(event) { + if (!event.isTrusted) return false; + const element = event.currentTarget; + if (event.key === "Enter") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; + } + if (event.key === " ") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; + } + return false; +} +var symbol = /* @__PURE__ */ Symbol("command"); +var useCommand = createHook( + function useCommand2(_a) { + var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); + const ref = (0, import_react14.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); + (0, import_react14.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react14.useState)(false); + const activeRef = (0, import_react14.useRef)(false); + const disabled = disabledFromProps(props); + const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + const element = event.currentTarget; + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (!isSelfTarget(event)) return; + if (isTextField(element)) return; + if (element.isContentEditable) return; + const isEnter = clickOnEnter && event.key === "Enter"; + const isSpace = clickOnSpace && event.key === " "; + const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; + const shouldPreventSpace = event.key === " " && !clickOnSpace; + if (shouldPreventEnter || shouldPreventSpace) { + event.preventDefault(); + return; + } + if (isEnter || isSpace) { + const nativeClick = isNativeClick(event); + if (isEnter) { + if (!nativeClick) { + event.preventDefault(); + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + const click = () => fireClickEvent(element, eventInit); + if (isFirefox()) { + queueBeforeEvent(element, "keyup", click); + } else { + queueMicrotask(click); + } + } + } else if (isSpace) { + activeRef.current = true; + if (!nativeClick) { + event.preventDefault(); + setActive(true); + } + } + } + }); + const onKeyUpProp = props.onKeyUp; + const onKeyUp = useEvent((event) => { + onKeyUpProp == null ? void 0 : onKeyUpProp(event); + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (event.metaKey) return; + const isSpace = clickOnSpace && event.key === " "; + if (activeRef.current && isSpace) { + activeRef.current = false; + if (!isNativeClick(event)) { + event.preventDefault(); + setActive(false); + const element = event.currentTarget; + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = __spreadProps(__spreadValues(__spreadValues({ + "data-active": active || void 0, + type: isNativeButton ? "button" : void 0 + }, metadataProps), props), { + ref: useMergeRefs(ref, props.ref), + onKeyDown, + onKeyUp + }); + props = useFocusable(props); + return props; + } +); +var Command = forwardRef22(function Command2(props) { + const htmlProps = useCommand(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js +var import_react15 = __toESM(require_react(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "span"; +function normalizeValue(value) { + return normalizeString(value).toLowerCase(); +} +function getOffsets(string, values) { + const offsets = []; + for (const value of values) { + let pos = 0; + const length = value.length; + while (string.indexOf(value, pos) !== -1) { + const index = string.indexOf(value, pos); + if (index !== -1) { + offsets.push([index, length]); + } + pos = index + 1; + } + } + return offsets; +} +function filterOverlappingOffsets(offsets) { + return offsets.filter(([offset, length], i2, arr) => { + return !arr.some( + ([o2, l2], j2) => j2 !== i2 && o2 <= offset && o2 + l2 >= offset + length + ); + }); +} +function sortOffsets(offsets) { + return offsets.sort(([a2], [b2]) => a2 - b2); +} +function splitValue(itemValue, userValue) { + if (!itemValue) return itemValue; + if (!userValue) return itemValue; + const userValues = toArray(userValue).filter(Boolean).map(normalizeValue); + const parts = []; + const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + "span", + { + "data-autocomplete-value": autocomplete ? "" : void 0, + "data-user-value": autocomplete ? void 0 : "", + children: value + }, + parts.length + ); + const offsets = sortOffsets( + filterOverlappingOffsets( + // Convert userValues into a set to avoid duplicates + getOffsets(normalizeValue(itemValue), new Set(userValues)) + ) + ); + if (!offsets.length) { + parts.push(span(itemValue, true)); + return parts; + } + const [firstOffset] = offsets[0]; + const values = [ + itemValue.slice(0, firstOffset), + ...offsets.flatMap(([offset, length], i2) => { + var _a; + const value = itemValue.slice(offset, offset + length); + const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; + const nextValue = itemValue.slice(offset + length, nextOffset); + return [value, nextValue]; + }) + ]; + values.forEach((value, i2) => { + if (!value) return; + parts.push(span(value, i2 % 2 === 0)); + }); + return parts; +} +var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) { + var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]); + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react15.useContext)(ComboboxItemValueContext); + const itemValue = value != null ? value : itemContext; + const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); + const children = (0, import_react15.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = __spreadValues({ + children + }, props); + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName6, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js +var import_react16 = __toESM(require_react(), 1); +var TagName7 = "div"; +function getMouseDestination(event) { + const relatedTarget = event.relatedTarget; + if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { + return relatedTarget; + } + return null; +} +function hoveringInside(event) { + const nextElement = getMouseDestination(event); + if (!nextElement) return false; + return contains(event.currentTarget, nextElement); +} +var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); +function movingToAnotherItem(event) { + let dest = getMouseDestination(event); + if (!dest) return false; + do { + if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; + dest = dest.parentElement; + } while (dest); + return false; +} +var useCompositeHover = createHook( + function useCompositeHover2(_a) { + var _b = _a, { + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover + } = _b, props = __objRest(_b, [ + "store", + "focusOnHover", + "blurOnHoverEnd" + ]); + const context = useCompositeContext(); + store = store || context; + invariant( + store, + "CompositeHover must be wrapped in a Composite component." + ); + const isMouseMoving = useIsMouseMoving(); + const onMouseMoveProp = props.onMouseMove; + const focusOnHoverProp = useBooleanEvent(focusOnHover); + const onMouseMove = useEvent((event) => { + onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (!focusOnHoverProp(event)) return; + if (!hasFocusWithin(event.currentTarget)) { + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (baseElement && !hasFocus(baseElement)) { + baseElement.focus(); + } + } + store == null ? void 0 : store.setActiveId(event.currentTarget.id); + }); + const onMouseLeaveProp = props.onMouseLeave; + const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); + const onMouseLeave = useEvent((event) => { + var _a2; + onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (hoveringInside(event)) return; + if (movingToAnotherItem(event)) return; + if (!focusOnHoverProp(event)) return; + if (!blurOnHoverEndProp(event)) return; + store == null ? void 0 : store.setActiveId(null); + (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }); + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName7, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js +var import_react17 = __toESM(require_react(), 1); +var TagName8 = "div"; +var useCollectionItem = createHook( + function useCollectionItem2(_a) { + var _b = _a, { + store, + shouldRegisterItem = true, + getItem = identity, + element + } = _b, props = __objRest(_b, [ + "store", + "shouldRegisterItem", + "getItem", + // @ts-expect-error This prop may come from a collection renderer. + "element" + ]); + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react17.useRef)(element); + (0, import_react17.useEffect)(() => { + const element2 = ref.current; + if (!id) return; + if (!element2) return; + if (!shouldRegisterItem) return; + const item = getItem({ id, element: element2 }); + return store == null ? void 0 : store.renderItem(item); + }, [id, shouldRegisterItem, getItem, store]); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref) + }); + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName8, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +var TagName9 = "button"; +function isEditableElement(element) { + if (isTextbox(element)) return true; + return element.tagName === "INPUT" && !isButton(element); +} +function getNextPageOffset(scrollingElement, pageUp = false) { + const height = scrollingElement.clientHeight; + const { top } = scrollingElement.getBoundingClientRect(); + const pageSize = Math.max(height * 0.875, height - 40) * 1.5; + const pageOffset = pageUp ? height - pageSize + top : pageSize + top; + if (scrollingElement.tagName === "HTML") { + return pageOffset + scrollingElement.scrollTop; + } + return pageOffset; +} +function getItemOffset(itemElement, pageUp = false) { + const { top } = itemElement.getBoundingClientRect(); + if (pageUp) { + return top + itemElement.clientHeight; + } + return top; +} +function findNextPageItemId(element, store, next, pageUp = false) { + var _a; + if (!store) return; + if (!next) return; + const { renderedItems } = store.getState(); + const scrollingElement = getScrollingElement(element); + if (!scrollingElement) return; + const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); + let id; + let prevDifference; + for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { + const previousId = id; + id = next(i2); + if (!id) break; + if (id === previousId) continue; + const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; + if (!itemElement) continue; + const itemOffset = getItemOffset(itemElement, pageUp); + const difference = itemOffset - nextPageOffset; + const absDifference = Math.abs(difference); + if (pageUp && difference <= 0 || !pageUp && difference >= 0) { + if (prevDifference !== void 0 && prevDifference < absDifference) { + id = previousId; + } + break; + } + prevDifference = absDifference; + } + return id; +} +function targetIsAnotherItem(event, store) { + if (isSelfTarget(event)) return false; + return isItem(store, event.target); +} +var useCompositeItem = createHook( + function useCompositeItem2(_a) { + var _b = _a, { + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp + } = _b, props = __objRest(_b, [ + "store", + "rowId", + "preventScrollOnKeyDown", + "moveOnKeyPress", + "tabbable", + "getItem", + "aria-setsize", + "aria-posinset" + ]); + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react18.useRef)(null); + const row = (0, import_react18.useContext)(CompositeRowContext); + const disabled = disabledFromProps(props); + const trulyDisabled = disabled && !props.accessibleWhenDisabled; + const { + rowId, + baseElement, + isActiveItem, + ariaSetSize, + ariaPosInSet, + isTabbable + } = useStoreStateObject(store, { + rowId(state) { + if (rowIdProp) return rowIdProp; + if (!state) return; + if (!(row == null ? void 0 : row.baseElement)) return; + if (row.baseElement !== state.baseElement) return; + return row.id; + }, + baseElement(state) { + return (state == null ? void 0 : state.baseElement) || void 0; + }, + isActiveItem(state) { + return !!state && state.activeId === id; + }, + ariaSetSize(state) { + if (ariaSetSizeProp != null) return ariaSetSizeProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaSetSize)) return; + if (row.baseElement !== state.baseElement) return; + return row.ariaSetSize; + }, + ariaPosInSet(state) { + if (ariaPosInSetProp != null) return ariaPosInSetProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaPosInSet)) return; + if (row.baseElement !== state.baseElement) return; + const itemsInRow = state.renderedItems.filter( + (item) => item.rowId === rowId + ); + return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); + }, + isTabbable(state) { + if (!(state == null ? void 0 : state.renderedItems.length)) return true; + if (state.virtualFocus) return false; + if (tabbable) return true; + if (state.activeId === null) return false; + const item = store == null ? void 0 : store.item(state.activeId); + if (item == null ? void 0 : item.disabled) return true; + if (!(item == null ? void 0 : item.element)) return true; + return state.activeId === id; + } + }); + const getItem = (0, import_react18.useCallback)( + (item) => { + var _a2; + const nextItem = __spreadProps(__spreadValues({}, item), { + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a2 = item.element) == null ? void 0 : _a2.textContent + }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react18.useRef)(false); + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (isPortalEvent(event)) return; + if (!id) return; + if (!store) return; + if (targetIsAnotherItem(event, store)) return; + const { virtualFocus, baseElement: baseElement2 } = store.getState(); + store.setActiveId(id); + if (isTextbox(event.currentTarget)) { + selectTextField(event.currentTarget); + } + if (!virtualFocus) return; + if (!isSelfTarget(event)) return; + if (isEditableElement(event.currentTarget)) return; + if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; + if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { + event.currentTarget.scrollIntoView({ + block: "nearest", + inline: "nearest" + }); + } + hasFocusedComposite.current = true; + const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); + if (fromComposite) { + focusSilently(baseElement2); + } else { + baseElement2.focus(); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + const state = store == null ? void 0 : store.getState(); + if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { + hasFocusedComposite.current = false; + event.preventDefault(); + event.stopPropagation(); + } + }); + const onKeyDownProp = props.onKeyDown; + const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!isSelfTarget(event)) return; + if (!store) return; + const { currentTarget } = event; + const state = store.getState(); + const item = store.item(id); + const isGrid2 = !!(item == null ? void 0 : item.rowId); + const isVertical = state.orientation !== "horizontal"; + const isHorizontal = state.orientation !== "vertical"; + const canHomeEnd = () => { + if (isGrid2) return true; + if (isHorizontal) return true; + if (!state.baseElement) return true; + if (!isTextField(state.baseElement)) return true; + return false; + }; + const keyMap = { + ArrowUp: (isGrid2 || isVertical) && store.up, + ArrowRight: (isGrid2 || isHorizontal) && store.next, + ArrowDown: (isGrid2 || isVertical) && store.down, + ArrowLeft: (isGrid2 || isHorizontal) && store.previous, + Home: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.first(); + } + return store == null ? void 0 : store.previous(-1); + }, + End: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.last(); + } + return store == null ? void 0 : store.next(-1); + }, + PageUp: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); + }, + PageDown: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); + } + }; + const action = keyMap[event.key]; + if (action) { + if (isTextbox(currentTarget)) { + const selection = getTextboxSelection(currentTarget); + const isLeft = isHorizontal && event.key === "ArrowLeft"; + const isRight = isHorizontal && event.key === "ArrowRight"; + const isUp = isVertical && event.key === "ArrowUp"; + const isDown = isVertical && event.key === "ArrowDown"; + if (isRight || isDown) { + const { length: valueLength } = getTextboxValue(currentTarget); + if (selection.end !== valueLength) return; + } else if ((isLeft || isUp) && selection.start !== 0) return; + } + const nextId = action(); + if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(nextId); + } + } + }); + const providerValue = (0, import_react18.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = __spreadProps(__spreadValues({ + id, + "data-active-item": isActiveItem || void 0 + }, props), { + ref: useMergeRefs(ref, props.ref), + tabIndex: isTabbable ? props.tabIndex : -1, + onFocus, + onBlurCapture, + onKeyDown + }); + props = useCommand(props); + props = useCollectionItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + })); + return removeUndefinedValues(__spreadProps(__spreadValues({}, props), { + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + })); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName9, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +var TagName10 = "div"; +function isSelected(storeValue, itemValue) { + if (itemValue == null) return; + if (storeValue == null) return false; + if (Array.isArray(storeValue)) { + return storeValue.includes(itemValue); + } + return storeValue === itemValue; +} +function getItemRole(popupRole) { + var _a; + const itemRoleByPopupRole = { + menu: "menuitem", + listbox: "option", + tree: "treeitem" + }; + const key = popupRole; + return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; +} +var useComboboxItem = createHook( + function useComboboxItem2(_a) { + var _b = _a, { + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp + } = _b, props = __objRest(_b, [ + "store", + "value", + "hideOnClick", + "setValueOnClick", + "selectValueOnClick", + "resetValueOnSelect", + "focusOnHover", + "moveOnKeyPress", + "getItem" + ]); + var _a2; + const context = useComboboxScopedContext(); + store = store || context; + invariant( + store, + "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." + ); + const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, { + resetValueOnSelectState: "resetValueOnSelect", + multiSelectable(state) { + return Array.isArray(state.selectedValue); + }, + selected(state) { + return isSelected(state.selectedValue, value); + } + }); + const getItem = (0, import_react19.useCallback)( + (item) => { + const nextItem = __spreadProps(__spreadValues({}, item), { value }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [value, getItemProp] + ); + setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; + hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; + const onClickProp = props.onClick; + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); + const resetValueOnSelectProp = useBooleanEvent( + (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable + ); + const hideOnClickProp = useBooleanEvent(hideOnClick); + const onClick = useEvent((event) => { + onClickProp == null ? void 0 : onClickProp(event); + if (event.defaultPrevented) return; + if (isDownloading(event)) return; + if (isOpeningInNewTab(event)) return; + if (value != null) { + if (selectValueOnClickProp(event)) { + if (resetValueOnSelectProp(event)) { + store == null ? void 0 : store.resetValue(); + } + store == null ? void 0 : store.setSelectedValue((prevValue) => { + if (!Array.isArray(prevValue)) return value; + if (prevValue.includes(value)) { + return prevValue.filter((v2) => v2 !== value); + } + return [...prevValue, value]; + }); + } + if (setValueOnClickProp(event)) { + store == null ? void 0 : store.setValue(value); + } + } + if (hideOnClickProp(event)) { + store == null ? void 0 : store.hide(); + } + }); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (!baseElement) return; + if (hasFocus(baseElement)) return; + const printable = event.key.length === 1; + if (printable || event.key === "Backspace" || event.key === "Delete") { + queueMicrotask(() => baseElement.focus()); + if (isTextField(baseElement)) { + store == null ? void 0 : store.setValue(baseElement.value); + } + } + }); + if (multiSelectable && selected != null) { + props = __spreadValues({ + "aria-selected": selected + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react19.useContext)(ComboboxListRoleContext); + props = __spreadProps(__spreadValues({ + role: getItemRole(popupRole), + children: value + }, props), { + onClick, + onKeyDown + }); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + // Dispatch a custom event on the combobox input when moving to an item + // with the keyboard so the Combobox component can enable inline + // autocompletion. + moveOnKeyPress: (event) => { + if (!moveOnKeyPressProp(event)) return false; + const moveEvent = new Event("combobox-item-move"); + const baseElement = store == null ? void 0 : store.getState().baseElement; + baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); + return true; + } + })); + props = useCompositeHover(__spreadValues({ store, focusOnHover }, props)); + return props; + } +); +var ComboboxItem = memo22( + forwardRef22(function ComboboxItem2(props) { + const htmlProps = useComboboxItem(props); + return createElement3(TagName10, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName11 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const comboboxId = store.useState((state) => { + var _a2; + return (_a2 = state.baseElement) == null ? void 0 : _a2.id; + }); + props = __spreadValues({ + htmlFor: comboboxId + }, props); + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName11, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js +var import_react20 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var TagName12 = "div"; +function afterTimeout(timeoutMs, cb) { + const timeoutId = setTimeout(cb, timeoutMs); + return () => clearTimeout(timeoutId); +} +function afterPaint2(cb) { + let raf = requestAnimationFrame(() => { + raf = requestAnimationFrame(cb); + }); + return () => cancelAnimationFrame(raf); +} +function parseCSSTime(...times) { + return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { + const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; + const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; + if (currentTime > longestTime) return currentTime; + return longestTime; + }, 0); +} +function isHidden(mounted, hidden, alwaysVisible) { + return !alwaysVisible && hidden !== false && (!mounted || !!hidden); +} +var useDisclosureContent = createHook(function useDisclosureContent2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const context = useDisclosureProviderContext(); + store = store || context; + invariant( + store, + "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." + ); + const ref = (0, import_react20.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react20.useState)(null); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const animated = store.useState("animated"); + const contentElement = store.useState("contentElement"); + const otherElement = useStoreState(store.disclosure, "contentElement"); + useSafeLayoutEffect(() => { + if (!ref.current) return; + store == null ? void 0 : store.setContentElement(ref.current); + }, [store]); + useSafeLayoutEffect(() => { + let previousAnimated; + store == null ? void 0 : store.setState("animated", (animated2) => { + previousAnimated = animated2; + return true; + }); + return () => { + if (previousAnimated === void 0) return; + store == null ? void 0 : store.setState("animated", previousAnimated); + }; + }, [store]); + useSafeLayoutEffect(() => { + if (!animated) return; + if (!(contentElement == null ? void 0 : contentElement.isConnected)) { + setTransition(null); + return; + } + return afterPaint2(() => { + setTransition(open ? "enter" : mounted ? "leave" : null); + }); + }, [animated, contentElement, open, mounted]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!animated) return; + if (!transition) return; + if (!contentElement) return; + const stopAnimation = () => store == null ? void 0 : store.setState("animating", false); + const stopAnimationSync = () => (0, import_react_dom.flushSync)(stopAnimation); + if (transition === "leave" && open) return; + if (transition === "enter" && !open) return; + if (typeof animated === "number") { + const timeout2 = animated; + return afterTimeout(timeout2, stopAnimationSync); + } + const { + transitionDuration, + animationDuration, + transitionDelay, + animationDelay + } = getComputedStyle(contentElement); + const { + transitionDuration: transitionDuration2 = "0", + animationDuration: animationDuration2 = "0", + transitionDelay: transitionDelay2 = "0", + animationDelay: animationDelay2 = "0" + } = otherElement ? getComputedStyle(otherElement) : {}; + const delay = parseCSSTime( + transitionDelay, + animationDelay, + transitionDelay2, + animationDelay2 + ); + const duration = parseCSSTime( + transitionDuration, + animationDuration, + transitionDuration2, + animationDuration2 + ); + const timeout = delay + duration; + if (!timeout) { + if (transition === "enter") { + store.setState("animated", false); + } + stopAnimation(); + return; + } + const frameRate = 1e3 / 60; + const maxTimeout = Math.max(timeout - frameRate, 0); + return afterTimeout(maxTimeout, stopAnimationSync); + }, [store, animated, contentElement, otherElement, open, transition]); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react20.useMemo)(() => { + if (hidden) { + return __spreadProps(__spreadValues({}, styleProp), { display: "none" }); + } + return styleProp; + }, [hidden, styleProp]); + props = __spreadProps(__spreadValues({ + id, + "data-open": open || void 0, + "data-enter": transition === "enter" || void 0, + "data-leave": transition === "leave" || void 0, + hidden + }, props), { + ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), + style + }); + return removeUndefinedValues(props); +}); +var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { + const htmlProps = useDisclosureContent(props); + return createElement3(TagName12, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2(_a) { + var _b = _a, { + unmountOnHide + } = _b, props = __objRest(_b, [ + "unmountOnHide" + ]); + const context = useDisclosureProviderContext(); + const store = props.store || context; + const mounted = useStoreState( + store, + (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) + ); + if (mounted === false) return null; + return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DisclosureContentImpl, __spreadValues({}, props)); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js +var import_react21 = __toESM(require_react(), 1); +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const scopedContext = useComboboxScopedContext(true); + const context = useComboboxContext(); + store = store || context; + const scopedContextSameStore = !!store && store === scopedContext; + invariant( + store, + "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react21.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: "none" }) : props.style; + const multiSelectable = store.useState( + (state) => Array.isArray(state.selectedValue) + ); + const role = useAttribute(ref, "role", props.role); + const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; + const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; + const [hasListboxInside, setHasListboxInside] = (0, import_react21.useState)(false); + const contentElement = store.useState("contentElement"); + useSafeLayoutEffect(() => { + if (!mounted) return; + const element = ref.current; + if (!element) return; + if (contentElement !== element) return; + const callback = () => { + setHasListboxInside(!!element.querySelector("[role='listbox']")); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { + subtree: true, + childList: true, + attributeFilter: ["role"] + }); + callback(); + return () => observer.disconnect(); + }, [mounted, contentElement]); + if (!hasListboxInside) { + props = __spreadValues({ + role: "listbox", + "aria-multiselectable": ariaMultiSelectable + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = __spreadProps(__spreadValues({ + id, + hidden + }, props), { + ref: useMergeRefs(setContentElement, ref, props.ref), + style + }); + return removeUndefinedValues(props); + } +); +var ComboboxList = forwardRef22(function ComboboxList2(props) { + const htmlProps = useComboboxList(props); + return createElement3(TagName13, htmlProps); +}); + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_remove_accents = __toESM(require_remove_accents(), 1); +var import_compose8 = __toESM(require_compose(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_components21 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/utils.mjs +var EMPTY_ARRAY3 = []; +var getCurrentValue = (filterDefinition, currentFilter) => { + if (filterDefinition.singleSelection) { + return currentFilter?.value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value; + } + if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { + return [currentFilter.value]; + } + return EMPTY_ARRAY3; +}; + +// packages/dataviews/build-module/hooks/use-elements.mjs +var import_element24 = __toESM(require_element(), 1); +var EMPTY_ARRAY4 = []; +function useElements({ + elements, + getElements +}) { + const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4; + const [records, setRecords] = (0, import_element24.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element24.useState)(false); + (0, import_element24.useEffect)(() => { + if (!getElements) { + setRecords(staticElements); + return; + } + let cancelled = false; + setIsLoading(true); + getElements().then((fetchedElements) => { + if (!cancelled) { + const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; + setRecords(dynamicElements); + } + }).catch(() => { + if (!cancelled) { + setRecords(staticElements); + } + }).finally(() => { + if (!cancelled) { + setIsLoading(false); + } + }); + return () => { + cancelled = true; + }; + }, [getElements, staticElements]); + return { + elements: records, + isLoading + }; +} + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +function normalizeSearchInput(input = "") { + return (0, import_remove_accents.default)(input.trim().toLowerCase()); +} +var getNewValue = (filterDefinition, currentFilter, value) => { + if (filterDefinition.singleSelection) { + return value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; + } + return [value]; +}; +function generateFilterElementCompositeItemId(prefix, filterElementValue) { + return `${prefix}-${filterElementValue}`; +} +var MultiSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-multi-selection", + { "is-selected": selected } + ), + children: selected && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components21.Icon, { icon: check_default }) + } + ); +}; +var SingleSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-single-selection", + { "is-selected": selected } + ) + } + ); +}; +function ListBox({ view, filter, onChangeView }) { + const baseId = (0, import_compose8.useInstanceId)(ListBox, "dataviews-filter-list-box"); + const [activeCompositeId, setActiveCompositeId] = (0, import_element25.useState)( + // When there are one or less operators, the first item is set as active + // (by setting the initial `activeId` to `undefined`). + // With 2 or more operators, the focus is moved on the operators control + // (by setting the initial `activeId` to `null`), meaning that there won't + // be an active item initially. Focus is then managed via the + // `onFocusVisible` callback. + filter.operators?.length === 1 ? void 0 : null + ); + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components21.Composite, + { + virtualFocus: true, + focusLoop: true, + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + role: "listbox", + className: "dataviews-filters__search-widget-listbox", + "aria-label": (0, import_i18n22.sprintf)( + /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ + (0, import_i18n22.__)("List of: %1$s"), + filter.name + ), + onFocusVisible: () => { + if (!activeCompositeId && filter.elements.length) { + setActiveCompositeId( + generateFilterElementCompositeItemId( + baseId, + filter.elements[0].value + ) + ); + } + }, + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components21.Composite.Typeahead, {}), + children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + import_components21.Composite.Hover, + { + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components21.Composite.Item, + { + id: generateFilterElementCompositeItemId( + baseId, + element.value + ), + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + "div", + { + "aria-label": element.label, + role: "option", + className: "dataviews-filters__search-widget-listitem" + } + ), + onClick: () => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + } + } + ), + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes(element.value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: element.label }) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element25.useState)(""); + const deferredSearchValue = (0, import_element25.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element25.useMemo)(() => { + const normalizedSearch = normalizeSearchInput(deferredSearchValue); + return filter.elements.filter( + (item) => normalizeSearchInput(item.label).includes(normalizedSearch) + ); + }, [filter.elements, deferredSearchValue]); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + ComboboxProvider, + { + selectedValue: currentValue, + setSelectedValue: (value) => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map((_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value + }; + } + return _filter; + }) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + setValue: setSearchValue, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + ComboboxLabel, + { + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components21.VisuallyHidden, { children: (0, import_i18n22.__)("Search items") }), + children: (0, import_i18n22.__)("Search items") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Combobox, + { + autoSelect: "always", + placeholder: (0, import_i18n22.__)("Search"), + className: "dataviews-filters__search-widget-filter-combobox__input" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components21.Icon, { icon: search_default }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + ComboboxList, + { + className: "dataviews-filters__search-widget-filter-combobox-list", + alwaysVisible: true, + children: [ + matches.map((element) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + ComboboxItem, + { + resetValueOnSelect: false, + value: element.value, + className: "dataviews-filters__search-widget-listitem", + hideOnClick: false, + setValueOnClick: false, + focusOnHover: true, + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes( + element.value + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + ComboboxItemValue, + { + className: "dataviews-filters__search-widget-filter-combobox-item-value", + value: element.label + } + ), + !!element.description && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) + ] }) + ] + }, + element.value + ); + }), + !matches.length && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: (0, import_i18n22.__)("No results found") }) + ] + } + ) + ] + } + ); +} +function SearchWidget(props) { + const { elements, isLoading } = useElements({ + elements: props.filter.elements, + getElements: props.filter.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components21.Spinner, {}) }); + } + if (elements.length === 0) { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n22.__)("No elements found") }); + } + const Widget = elements.length > 10 ? ComboboxList22 : ListBox; + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Widget, { ...props, filter: { ...props.filter, elements } }); +} + +// packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs +var import_es6 = __toESM(require_es6(), 1); +var import_compose9 = __toESM(require_compose(), 1); +var import_element26 = __toESM(require_element(), 1); +var import_components22 = __toESM(require_components(), 1); +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +function InputWidget({ + filter, + view, + onChangeView, + fields +}) { + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const field = (0, import_element26.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Deactivate validation for filters. + isValid: {}, + // Configure getValue/setValue as if Item was a plain object. + getValue: ({ item }) => item[currentField.id], + setValue: ({ value }) => ({ + [currentField.id]: value + }) + }; + } + return currentField; + }, [fields, filter.field]); + const data = (0, import_element26.useMemo)(() => { + return (view.filters ?? []).reduce( + (acc, activeFilter) => { + acc[activeFilter.field] = activeFilter.value; + return acc; + }, + {} + ); + }, [view.filters]); + const handleChange = (0, import_compose9.useEvent)((updatedData) => { + if (!field || !currentFilter) { + return; + } + const nextValue = field.getValue({ item: updatedData }); + if ((0, import_es6.default)(nextValue, currentValue)) { + return; + } + onChangeView({ + ...view, + filters: (view.filters ?? []).map( + (_filter) => _filter.field === filter.field ? { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + // Consider empty strings as undefined: + // + // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records + // - empty string as value means "search empty string": returns only the records that have an empty string as value + // + // In practice, this means the filter will not be able to find an empty string as the value. + value: nextValue === "" ? void 0 : nextValue + } : _filter + ) + }); + }); + if (!field || !field.Edit || !currentFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components22.Flex, + { + className: "dataviews-filters__user-input-widget", + gap: 2.5, + direction: "column", + children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + field.Edit, + { + hideLabelFromVision: true, + data, + field, + operator: currentFilter.operator, + onChange: handleChange + } + ) + } + ); +} + +// packages/dataviews/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); + +// packages/dataviews/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} + +// packages/dataviews/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} + +// packages/dataviews/node_modules/date-fns/addDays.js +function addDays(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) return _date; + _date.setDate(_date.getDate() + amount); + return _date; +} + +// packages/dataviews/node_modules/date-fns/addMonths.js +function addMonths(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) { + return _date; + } + const dayOfMonth = _date.getDate(); + const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); + endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); + const daysInMonth = endOfDesiredMonth.getDate(); + if (dayOfMonth >= daysInMonth) { + return endOfDesiredMonth; + } else { + _date.setFullYear( + endOfDesiredMonth.getFullYear(), + endOfDesiredMonth.getMonth(), + dayOfMonth + ); + return _date; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} + +// packages/dataviews/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} + +// packages/dataviews/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} + +// packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} + +// packages/dataviews/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} + +// packages/dataviews/node_modules/date-fns/addWeeks.js +function addWeeks(date, amount, options) { + return addDays(date, amount * 7, options); +} + +// packages/dataviews/node_modules/date-fns/addYears.js +function addYears(date, amount, options) { + return addMonths(date, amount * 12, options); +} + +// packages/dataviews/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} + +// packages/dataviews/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} + +// packages/dataviews/node_modules/date-fns/startOfMonth.js +function startOfMonth(date, options) { + const _date = toDate(date, options?.in); + _date.setDate(1); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = (token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format6 = args.formats[width] || args.formats[args.defaultWidth]; + return format6; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = (dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}; +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: (quarter) => quarter - 1 + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: (value) => parseInt(value, 10) + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: (index) => index + 1 + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// packages/dataviews/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} + +// packages/dataviews/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} + +// packages/dataviews/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// packages/dataviews/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, + // Year + y: function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone quarter + q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, + // Month + M: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, + // Stand-alone month + L: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, + // Local week of year + w: function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Local day of week + e: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone local day of week + c: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, + // ISO day of week + i: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // AM or PM + a: function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // AM, PM, midnight, noon + b: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // Hour [1-12] + h: function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (GMT) + O: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (specific non-location) + z: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Seconds timestamp + t: function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + } +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}; +var timeLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}; +var dateTimeLongFormatter = (pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +function warnOrThrowProtectedError(token, format6, input) { + const _message = message(token, format6, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +function message(token, format6, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} + +// packages/dataviews/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} + +// packages/dataviews/node_modules/date-fns/subDays.js +function subDays(date, amount, options) { + return addDays(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subMonths.js +function subMonths(date, amount, options) { + return addMonths(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subWeeks.js +function subWeeks(date, amount, options) { + return addWeeks(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subYears.js +function subYears(date, amount, options) { + return addYears(date, -amount, options); +} + +// packages/dataviews/build-module/utils/operators.mjs +var import_i18n23 = __toESM(require_i18n(), 1); +var import_element27 = __toESM(require_element(), 1); +var import_date = __toESM(require_date(), 1); +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +var filterTextWrappers = { + Name: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), + Value: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) +}; +function getRelativeDate(value, unit) { + switch (unit) { + case "days": + return subDays(/* @__PURE__ */ new Date(), value); + case "weeks": + return subWeeks(/* @__PURE__ */ new Date(), value); + case "months": + return subMonths(/* @__PURE__ */ new Date(), value); + case "years": + return subYears(/* @__PURE__ */ new Date(), value); + default: + return /* @__PURE__ */ new Date(); + } +} +var isNoneOperatorDefinition = { + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is none of"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ + (0, import_i18n23.__)("%1$s is none of: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter: ((item, field, filterValue) => { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return !filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return !filterValue.includes(fieldValue); + } + return false; + }), + selection: "multi" +}; +var OPERATORS = [ + { + name: OPERATOR_IS_ANY, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return filterValue.includes(fieldValue); + } + return false; + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NONE, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_IS_ALL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes all"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes all: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + return filterValue.every((value) => { + return field.getValue({ item })?.includes(value); + }); + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NOT_ALL, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_BETWEEN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Between (inc)"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ + (0, import_i18n23.__)( + "%1$s between (inc): %2$s and %3$s" + ), + filter.name, + activeElements[0].label[0], + activeElements[0].label[1] + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { + return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; + } + return false; + }, + selection: "custom" + }, + { + name: OPERATOR_IN_THE_PAST, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("In the past"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ + (0, import_i18n23.__)( + "%1$s is in the past: %2$s" + ), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); + }, + selection: "custom" + }, + { + name: OPERATOR_OVER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Over"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ + (0, import_i18n23.__)("%1$s is over: %2$s"), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue < targetDate; + }, + selection: "custom" + }, + { + name: OPERATOR_IS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue === field.getValue({ item }) || filterValue === void 0; + }, + selection: "single" + }, + { + name: OPERATOR_IS_NOT, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is not"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue !== field.getValue({ item }); + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ + (0, import_i18n23.__)("%1$s is less than: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue < filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue > filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than or equal"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is less than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue <= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than or equal"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue >= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is before: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate < filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is after: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate > filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before (inc)"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or before: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate <= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After (inc)"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or after: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate >= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Contains"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ + (0, import_i18n23.__)("%1$s contains: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Doesn't contain"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ + (0, import_i18n23.__)( + "%1$s doesn't contain: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_STARTS_WITH, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Starts with"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ + (0, import_i18n23.__)("%1$s starts with: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("On"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() === fieldDate.getTime(); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Not on"), + filterText: (filter, activeElements) => (0, import_element27.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() !== fieldDate.getTime(); + }, + selection: "single" + } +]; +var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name); +var getAllOperatorNames = () => OPERATORS.map((op) => op.name); +var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some( + (op) => op.name === name +); +var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); +var ENTER = "Enter"; +var SPACE = " "; +var FilterText = ({ + activeElements, + filterInView, + filter +}) => { + if (activeElements === void 0 || activeElements.length === 0) { + return filter.name; + } + const operator = getOperatorByName(filterInView?.operator); + if (operator !== void 0) { + return operator.filterText(filter, activeElements); + } + return (0, import_i18n24.sprintf)( + /* translators: 1: Filter name e.g.: "Unknown status for Author". */ + (0, import_i18n24.__)("Unknown status for %1$s"), + filter.name + ); +}; +function OperatorSelector({ + filter, + view, + onChangeView +}) { + const operatorOptions = filter.operators?.map((operator) => ({ + value: operator, + label: getOperatorByName(operator)?.label || operator + })); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const value = currentFilter?.operator || filter.operators[0]; + return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "flex-start", + className: "dataviews-filters__summary-operators-container", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_components23.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components23.SelectControl, + { + className: "dataviews-filters__summary-operators-filter-select", + label: (0, import_i18n24.__)("Conditions"), + value, + options: operatorOptions, + onChange: (newValue) => { + const newOperator = newValue; + const currentOperator = currentFilter?.operator; + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + const currentOpSelectionModel = getOperatorByName( + currentOperator + )?.selection; + const newOpSelectionModel = getOperatorByName( + newOperator + )?.selection; + const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ + currentOpSelectionModel, + newOpSelectionModel + ].includes("custom"); + return { + ..._filter, + value: shouldResetValue ? void 0 : _filter.value, + operator: newOperator + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: newOperator, + value: void 0 + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + size: "small", + variant: "minimal", + hideLabelFromVision: true + } + ) + ] + } + ); +} +function Filter({ + addFilterRef, + openedFilter, + fields, + ...commonProps +}) { + const toggleRef = (0, import_element28.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element28.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Configure getValue as if Item was a plain object. + // See related input-widget.tsx + getValue: ({ item }) => item[currentField.id] + }; + } + return currentField; + }, [fields, filter.field]); + const { elements } = useElements({ + elements: filter.elements, + getElements: filter.getElements + }); + if (elements.length > 0) { + activeElements = elements.filter((element) => { + if (filter.singleSelection) { + return element.value === filterInView?.value; + } + return filterInView?.value?.includes(element.value); + }); + } else if (Array.isArray(filterInView?.value)) { + const label = filterInView.value.map((v2) => { + const formattedValue = field?.getValueFormatted({ + item: { [field.id]: v2 }, + field + }); + return formattedValue || String(v2); + }); + activeElements = [ + { + value: filterInView.value, + // @ts-ignore + label + } + ]; + } else if (typeof filterInView?.value === "object") { + activeElements = [ + { value: filterInView.value, label: filterInView.value } + ]; + } else if (filterInView?.value !== void 0) { + const label = field !== void 0 ? field.getValueFormatted({ + item: { [field.id]: filterInView.value }, + field + }) : String(filterInView.value); + activeElements = [ + { + value: filterInView.value, + label + } + ]; + } + const isPrimary = filter.isPrimary; + const isLocked = filterInView?.isLocked; + const hasValues = !isLocked && filterInView?.value !== void 0; + const canResetOrRemove = !isLocked && (!isPrimary || hasValues); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components23.Dropdown, + { + defaultOpen: openedFilter === filter.field, + contentClassName: "dataviews-filters__summary-popover", + popoverProps: { placement: "bottom-start", role: "dialog" }, + onClose: () => { + toggleRef.current?.focus(); + }, + renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components23.Tooltip, + { + text: (0, import_i18n24.sprintf)( + /* translators: 1: Filter name. */ + (0, import_i18n24.__)("Filter by: %1$s"), + filter.name.toLowerCase() + ), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + "div", + { + className: clsx_default( + "dataviews-filters__summary-chip", + { + "has-reset": canResetOrRemove, + "has-values": hasValues, + "is-not-clickable": isLocked + } + ), + role: "button", + tabIndex: isLocked ? -1 : 0, + onClick: () => { + if (!isLocked) { + onToggle(); + } + }, + onKeyDown: (event) => { + if (!isLocked && [ENTER, SPACE].includes(event.key)) { + onToggle(); + event.preventDefault(); + } + }, + "aria-disabled": isLocked, + "aria-pressed": isOpen, + "aria-expanded": isOpen, + ref: toggleRef, + children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + FilterText, + { + activeElements, + filterInView, + filter + } + ) + } + ) + } + ), + canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components23.Tooltip, + { + text: isPrimary ? (0, import_i18n24.__)("Reset") : (0, import_i18n24.__)("Remove"), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + "button", + { + className: clsx_default( + "dataviews-filters__summary-chip-remove", + { "has-values": hasValues } + ), + onClick: () => { + onChangeView({ + ...view, + page: 1, + filters: view.filters?.filter( + (_filter) => _filter.field !== filter.field + ) + }); + if (!isPrimary) { + addFilterRef.current?.focus(); + } else { + toggleRef.current?.focus(); + } + }, + children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_components23.Icon, { icon: close_small_default }) + } + ) + } + ) + ] }), + renderContent: () => { + return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(OperatorSelector, { ...commonProps }), + commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + SearchWidget, + { + ...commonProps, + filter: { + ...commonProps.filter, + elements + } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(InputWidget, { ...commonProps, fields }) + ] }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs +var import_components24 = __toESM(require_components(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); +var import_element29 = __toESM(require_element(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock(import_components24.privateApis); +function AddFilterMenu({ + filters, + view, + onChangeView, + setOpenedFilter, + triggerProps +}) { + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Menu4, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Menu4.TriggerButton, { ...triggerProps }), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Menu4.Popover, { children: inactiveFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + Menu4.Item, + { + onClick: () => { + setOpenedFilter(filter.field); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: filter.field, + value: void 0, + operator: filter.operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Menu4.ItemLabel, { children: filter.name }) + }, + filter.field + ); + }) }) + ] }); +} +function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { + if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { + return null; + } + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + AddFilterMenu, + { + triggerProps: { + render: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + import_components24.Button, + { + accessibleWhenDisabled: true, + size: "compact", + className: "dataviews-filters-button", + variant: "tertiary", + disabled: !inactiveFilters.length, + ref + } + ), + children: (0, import_i18n25.__)("Add filter") + }, + ...{ filters, view, onChangeView, setOpenedFilter } + } + ); +} +var add_filter_default = (0, import_element29.forwardRef)(AddFilter); + +// packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs +var import_components25 = __toESM(require_components(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +function ResetFilter({ + filters, + view, + onChangeView +}) { + const isPrimary = (field) => filters.some( + (_filter) => _filter.field === field && _filter.isPrimary + ); + const isDisabled = !view.search && !view.filters?.some( + (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) + ); + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + import_components25.Button, + { + disabled: isDisabled, + accessibleWhenDisabled: true, + size: "compact", + variant: "tertiary", + className: "dataviews-filters__reset-button", + onClick: () => { + onChangeView({ + ...view, + page: 1, + search: "", + filters: view.filters?.filter((f2) => !!f2.isLocked) || [] + }); + }, + children: (0, import_i18n26.__)("Reset") + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs +var import_element30 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element30.useMemo)(() => { + const filters = []; + fields.forEach((field) => { + if (field.filterBy === false || !field.hasElements && !field.Edit) { + return; + } + const operators = field.filterBy.operators; + const isPrimary = !!field.filterBy?.isPrimary; + const isLocked = view.filters?.some( + (f2) => f2.field === field.id && !!f2.isLocked + ) ?? false; + filters.push({ + field: field.id, + name: field.label, + elements: field.elements, + getElements: field.getElements, + hasElements: field.hasElements, + singleSelection: operators.some( + (op) => isSingleSelectionOperator(op) + ), + operators, + isVisible: isLocked || isPrimary || !!view.filters?.some( + (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) + ), + isPrimary, + isLocked + }); + }); + filters.sort((a2, b2) => { + if (a2.isLocked && !b2.isLocked) { + return -1; + } + if (!a2.isLocked && b2.isLocked) { + return 1; + } + if (a2.isPrimary && !b2.isPrimary) { + return -1; + } + if (!a2.isPrimary && b2.isPrimary) { + return 1; + } + return a2.name.localeCompare(b2.name); + }); + return filters; + }, [fields, view]); +} +var use_filters_default = useFilters; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +function Filters({ className }) { + const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element31.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element31.useRef)(null); + const filters = use_filters_default(fields, view); + const addFilter = /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + add_filter_default, + { + filters, + view, + onChangeView, + ref: addFilterRef, + setOpenedFilter + }, + "add-filter" + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + if (visibleFilters.length === 0) { + return null; + } + const filterComponents = [ + ...visibleFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + Filter, + { + filter, + view, + fields, + onChangeView, + addFilterRef, + openedFilter + }, + filter.field + ); + }), + addFilter + ]; + filterComponents.push( + /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + ResetFilter, + { + filters, + view, + onChangeView + }, + "reset-filters" + ) + ); + return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + gap: "sm", + style: { width: "fit-content" }, + wrap: "wrap", + className, + children: filterComponents + } + ); +} +var filters_default = (0, import_element31.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element32 = __toESM(require_element(), 1); +var import_components26 = __toESM(require_components(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +function FiltersToggle() { + const { + filters, + view, + onChangeView, + setOpenedFilter, + isShowingFilter, + setIsShowingFilter + } = (0, import_element32.useContext)(dataviews_context_default); + const buttonRef = (0, import_element32.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element32.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + const hasVisibleFilters = !!visibleFilters.length; + if (filters.length === 0) { + return null; + } + const addFilterButtonProps = { + label: (0, import_i18n27.__)("Add filter"), + "aria-expanded": false, + isPressed: false + }; + const toggleFiltersButtonProps = { + label: (0, import_i18n27._x)("Filter", "verb"), + "aria-expanded": isShowingFilter, + isPressed: isShowingFilter, + onClick: () => { + if (!isShowingFilter) { + setOpenedFilter(null); + } + setIsShowingFilter(!isShowingFilter); + } + }; + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + import_components26.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + AddFilterMenu, + { + filters, + view, + onChangeView: onChangeViewWithFilterVisibility, + setOpenedFilter, + triggerProps: { render: buttonComponent } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + FilterVisibilityToggle, + { + buttonRef, + filtersCount: view.filters?.length, + children: buttonComponent + } + ) }); +} +function FilterVisibilityToggle({ + buttonRef, + filtersCount, + children +}) { + (0, import_element32.useEffect)( + () => () => { + buttonRef.current?.focus(); + }, + [buttonRef] + ); + return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [ + children, + !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) + ] }); +} +var toggle_default = FiltersToggle; + +// packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs +var import_element33 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element33.useContext)(dataviews_context_default); + if (!isShowingFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(filters_default, { ...props }); +} +var filters_toggled_default = FiltersToggled; + +// packages/dataviews/build-module/components/dataviews-layout/index.mjs +var import_element34 = __toESM(require_element(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading, + view, + onChangeView, + selection, + onChangeSelection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + defaultLayouts, + empty = /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("p", { children: (0, import_i18n28.__)("No results") }) + } = (0, import_element34.useContext)(dataviews_context_default); + const ViewComponent = VIEW_LAYOUTS.find( + (v2) => v2.type === view.type && defaultLayouts[v2.type] + )?.component; + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + ViewComponent, + { + className, + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + renderItemLink, + isItemClickable, + view, + empty + } + ); +} + +// packages/dataviews/build-module/components/dataviews-footer/index.mjs +var import_element35 = __toESM(require_element(), 1); +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var EMPTY_ARRAY5 = []; +function DataViewsFooter() { + const { + view, + paginationInfo: { totalItems = 0, totalPages }, + data, + actions = EMPTY_ARRAY5 + } = (0, import_element35.useContext)(dataviews_context_default); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) { + return null; + } + return !!totalItems && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: "dataviews-footer", + gap: "sm", + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(BulkActionsFooter, {}), + /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(dataviews_pagination_default, {}) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-search/index.mjs +var import_i18n29 = __toESM(require_i18n(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_components27 = __toESM(require_components(), 1); +var import_compose10 = __toESM(require_compose(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var DataViewsSearch = (0, import_element36.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element36.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element36.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element36.useRef)(onChangeView); + const viewRef = (0, import_element36.useRef)(view); + (0, import_element36.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element36.useEffect)(() => { + if (debouncedSearch !== viewRef.current?.search) { + onChangeViewRef.current({ + ...viewRef.current, + page: 1, + search: debouncedSearch + }); + } + }, [debouncedSearch]); + const searchLabel = label || (0, import_i18n29.__)("Search"); + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( + import_components27.SearchControl, + { + className: "dataviews-search", + onChange: setSearch, + value: search, + label: searchLabel, + placeholder: searchLabel, + size: "compact" + } + ); +}); +var dataviews_search_default = DataViewsSearch; + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_components29 = __toESM(require_components(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); +var import_element38 = __toESM(require_element(), 1); +var import_warning = __toESM(require_warning(), 1); +var import_compose11 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +var import_components28 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element37.useContext)(dataviews_context_default); + const { view, onChangeView } = context; + const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; + if (!context.hasInfiniteScrollHandler) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components28.ToggleControl, + { + label: (0, import_i18n30.__)("Enable infinite scroll"), + help: (0, import_i18n30.__)( + "Automatically load more content as you scroll, instead of showing pagination links." + ), + checked: infiniteScrollEnabled, + onChange: (newValue) => { + onChangeView({ + ...view, + infiniteScrollEnabled: newValue + }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu5 } = unlock(import_components29.privateApis); +var DATAVIEWS_CONFIG_POPOVER_PROPS = { + className: "dataviews-config__popover", + placement: "bottom-end", + offset: 9 +}; +function ViewTypeMenu() { + const { view, onChangeView, defaultLayouts } = (0, import_element38.useContext)(dataviews_context_default); + const availableLayouts = Object.keys(defaultLayouts); + if (availableLayouts.length <= 1) { + return null; + } + const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); + return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Menu5, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + Menu5.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.Button, + { + size: "compact", + icon: activeView?.icon, + label: (0, import_i18n31.__)("Layout") + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Menu5.Popover, { children: availableLayouts.map((layout) => { + const config = VIEW_LAYOUTS.find( + (v2) => v2.type === layout + ); + if (!config) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + Menu5.RadioItem, + { + value: layout, + name: "view-actions-available-view", + checked: layout === view.type, + hideOnClick: true, + onChange: (e2) => { + switch (e2.target.value) { + case "list": + case "grid": + case "table": + case "pickerGrid": + case "pickerTable": + case "activity": + const viewWithoutLayout = { ...view }; + if ("layout" in viewWithoutLayout) { + delete viewWithoutLayout.layout; + } + return onChangeView({ + ...viewWithoutLayout, + type: e2.target.value, + ...defaultLayouts[e2.target.value] + }); + } + (0, import_warning.default)("Invalid dataview"); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Menu5.ItemLabel, { children: config.label }) + }, + layout + ); + }) }) + ] }); +} +function SortFieldControl() { + const { view, fields, onChangeView } = (0, import_element38.useContext)(dataviews_context_default); + const orderOptions = (0, import_element38.useMemo)(() => { + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + return sortableFields.map((field) => { + return { + label: field.label, + value: field.id + }; + }); + }, [fields]); + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.SelectControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n31.__)("Sort by"), + value: view.sort?.field, + options: orderOptions, + onChange: (value) => { + onChangeView({ + ...view, + sort: { + direction: view?.sort?.direction || "desc", + field: value + }, + showLevels: false + }); + } + } + ); +} +function SortDirectionControl() { + const { view, fields, onChangeView } = (0, import_element38.useContext)(dataviews_context_default); + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + if (sortableFields.length === 0) { + return null; + } + let value = view.sort?.direction; + if (!value && view.sort?.field) { + value = "desc"; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalToggleGroupControl, + { + className: "dataviews-view-config__sort-direction", + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Order"), + value, + onChange: (newDirection) => { + if (newDirection === "asc" || newDirection === "desc") { + onChangeView({ + ...view, + sort: { + direction: newDirection, + field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. + fields.find( + (field) => field.enableSorting !== false + )?.id || "" + }, + showLevels: false + }); + return; + } + (0, import_warning.default)("Invalid direction"); + }, + children: SORTING_DIRECTIONS.map((direction) => { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalToggleGroupControlOptionIcon, + { + value: direction, + icon: sortIcons[direction], + label: sortLabels[direction] + }, + direction + ); + }) + } + ); +} +function ItemsPerPageControl() { + const { view, config, onChangeView } = (0, import_element38.useContext)(dataviews_context_default); + const { infiniteScrollEnabled } = view; + if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalToggleGroupControl, + { + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Items per page"), + value: view.perPage || 10, + disabled: !view?.sort?.field, + onChange: (newItemsPerPage) => { + const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); + onChangeView({ + ...view, + perPage: newItemsPerPageNumber, + page: 1 + }); + }, + children: config.perPageSizes.map((value) => { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalToggleGroupControlOption, + { + value, + label: value.toString() + }, + value + ); + }) + } + ); +} +function SettingsSection({ + title, + description, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_components29.__experimentalGrid, { columns: 12, className: "dataviews-settings-section", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "dataviews-settings-section__sidebar", children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: title + } + ), + description && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalText, + { + variant: "muted", + className: "dataviews-settings-section__description", + children: description + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalGrid, + { + columns: 8, + gap: 4, + className: "dataviews-settings-section__content", + children + } + ) + ] }); +} +function DataviewsViewConfigDropdown() { + const { view } = (0, import_element38.useContext)(dataviews_context_default); + const popoverId = (0, import_compose11.useInstanceId)( + _DataViewsViewConfig, + "dataviews-view-config-dropdown" + ); + const activeLayout = VIEW_LAYOUTS.find( + (layout) => layout.type === view.type + ); + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.Dropdown, + { + expandOnMobile: true, + popoverProps: { + ...DATAVIEWS_CONFIG_POPOVER_PROPS, + id: popoverId + }, + renderToggle: ({ onToggle, isOpen }) => { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.Button, + { + size: "compact", + icon: cog_default, + label: (0, import_i18n31._x)("View options", "View is used as a noun"), + onClick: onToggle, + "aria-expanded": isOpen ? "true" : "false", + "aria-controls": popoverId + } + ); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(SettingsSection, { title: (0, import_i18n31.__)("Appearance"), children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "is-divided-in-two", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SortFieldControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SortDirectionControl, {}) + ] + } + ), + !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(activeLayout.viewConfigOptions, {}), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(InfiniteScrollToggle, {}), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ItemsPerPageControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PropertiesSection, {}) + ] }) + } + ) + } + ) + } + ); +} +function _DataViewsViewConfig() { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ViewTypeMenu, {}), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(DataviewsViewConfigDropdown, {}) + ] }); +} +var DataViewsViewConfig = (0, import_element38.memo)(_DataViewsViewConfig); +var dataviews_view_config_default = DataViewsViewConfig; + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_components30 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs +function getCustomValidity(isValid2, validity) { + let customValidity; + if (isValid2?.required && validity?.required) { + customValidity = validity?.required?.message ? validity.required : void 0; + } else if (isValid2?.pattern && validity?.pattern) { + customValidity = validity.pattern; + } else if (isValid2?.min && validity?.min) { + customValidity = validity.min; + } else if (isValid2?.max && validity?.max) { + customValidity = validity.max; + } else if (isValid2?.minLength && validity?.minLength) { + customValidity = validity.minLength; + } else if (isValid2?.maxLength && validity?.maxLength) { + customValidity = validity.maxLength; + } else if (isValid2?.elements && validity?.elements) { + customValidity = validity.elements; + } else if (validity?.custom) { + customValidity = validity.custom; + } + return customValidity; +} + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var { ValidatedCheckboxControl } = unlock(import_components30.privateApis); +function Checkbox({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, label, description, isValid: isValid2 } = field; + const onChangeControl = (0, import_element39.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [data, getValue, onChange, setValue]); + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + ValidatedCheckboxControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/combobox.mjs +var import_components31 = __toESM(require_components(), 1); +var import_element40 = __toESM(require_element(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedComboboxControl } = unlock(import_components31.privateApis); +function Combobox3({ + data, + field, + onChange, + hideLabelFromVision, + validity +}) { + const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element40.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_components31.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + ValidatedComboboxControl, + { + required: !!field.isValid?.required, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + placeholder, + options: elements, + onChange: onChangeControl, + hideLabelFromVision, + allowReset: true, + expandOnFocus: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element42 = __toESM(require_element(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_date3 = __toESM(require_date(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs +var import_components32 = __toESM(require_components(), 1); +var import_element41 = __toESM(require_element(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var TIME_UNITS_OPTIONS = { + [OPERATOR_IN_THE_PAST]: [ + { value: "days", label: (0, import_i18n32.__)("Days") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks") }, + { value: "months", label: (0, import_i18n32.__)("Months") }, + { value: "years", label: (0, import_i18n32.__)("Years") } + ], + [OPERATOR_OVER]: [ + { value: "days", label: (0, import_i18n32.__)("Days ago") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks ago") }, + { value: "months", label: (0, import_i18n32.__)("Months ago") }, + { value: "years", label: (0, import_i18n32.__)("Years ago") } + ] +}; +function RelativeDateControl({ + className, + data, + field, + onChange, + hideLabelFromVision, + operator +}) { + const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; + const { id, label, getValue, setValue } = field; + const fieldValue = getValue({ item: data }); + const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; + const onChangeValue = (0, import_element41.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element41.useCallback)( + (newUnit) => onChange( + setValue({ + item: data, + value: { value: relValue, unit: newUnit } + }) + ), + [onChange, setValue, data, relValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + import_components32.BaseControl, + { + id, + className: clsx_default(className, "dataviews-controls__relative-date"), + label, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(Stack, { direction: "row", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + import_components32.__experimentalNumberControl, + { + __next40pxDefaultSize: true, + className: "dataviews-controls__relative-date-number", + spinControls: "none", + min: 1, + step: 1, + value: relValue, + onChange: onChangeValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + import_components32.SelectControl, + { + className: "dataviews-controls__relative-date-unit", + __next40pxDefaultSize: true, + label: (0, import_i18n32.__)("Unit"), + value: unit, + options, + onChange: onChangeUnit, + hideLabelFromVision: true + } + ) + ] }) + } + ); +} + +// packages/dataviews/build-module/field-types/utils/parse-date-time.mjs +var import_date2 = __toESM(require_date(), 1); +function parseDateTime(dateTimeString) { + if (!dateTimeString) { + return null; + } + const parsed = (0, import_date2.getDate)(dateTimeString); + return parsed && isValid(parsed) ? parsed : null; +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar, ValidatedInputControl } = unlock(import_components33.privateApis); +var formatDateTime = (date) => { + if (!date) { + return ""; + } + if (typeof date === "string") { + return date; + } + return format(date, "yyyy-MM-dd'T'HH:mm"); +}; +function CalendarDateTimeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, description, setValue, getValue, isValid: isValid2 } = field; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element42.useRef)(null); + const validationTimeoutRef = (0, import_element42.useRef)(); + const previousFocusRef = (0, import_element42.useRef)(null); + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element42.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element42.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + let finalDateTime = newDate; + if (value) { + const currentDateTime = parseDateTime(value); + if (currentDateTime) { + finalDateTime = new Date(newDate); + finalDateTime.setHours(currentDateTime.getHours()); + finalDateTime.setMinutes( + currentDateTime.getMinutes() + ); + } + } + dateTimeValue = finalDateTime.toISOString(); + onChangeCallback(dateTimeValue); + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + } else { + onChangeCallback(void 0); + } + previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; + validationTimeoutRef.current = setTimeout(() => { + if (inputControlRef.current) { + inputControlRef.current.focus(); + inputControlRef.current.blur(); + onChangeCallback(dateTimeValue); + if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { + previousFocusRef.current.focus(); + } + } + }, 0); + }, + [onChangeCallback, value] + ); + const handleManualDateTimeChange = (0, import_element42.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = new Date(newValue); + onChangeCallback(dateTime.toISOString()); + const parsedDate = parseDateTime(dateTime.toISOString()); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } else { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const { format: fieldFormat } = field; + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date3.getSettings)().l10n.startOfWeek; + const { + timezone: { string: timezoneString } + } = (0, import_date3.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + import_components33.BaseControl, + { + id, + label: displayLabel, + help: description, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + DateCalendar, + { + style: { width: "100%" }, + selected: value ? parseDateTime(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ), + /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + ValidatedInputControl, + { + ref: inputControlRef, + __next40pxDefaultSize: true, + required: !!isValid2?.required, + customValidity: getCustomValidity(isValid2, validity), + type: "datetime-local", + label: (0, import_i18n33.__)("Date time"), + hideLabelFromVision: true, + value: value ? formatDateTime( + parseDateTime(value) || void 0 + ) : "", + onChange: handleManualDateTimeChange + } + ) + ] }) + } + ); +} +function DateTime({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__datetime", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + CalendarDateTimeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/date.mjs +var import_components34 = __toESM(require_components(), 1); +var import_element43 = __toESM(require_element(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); +var import_date4 = __toESM(require_date(), 1); +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock(import_components34.privateApis); +var DATE_PRESETS = [ + { + id: "today", + label: (0, import_i18n34.__)("Today"), + getValue: () => (0, import_date4.getDate)(null) + }, + { + id: "yesterday", + label: (0, import_i18n34.__)("Yesterday"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 1); + } + }, + { + id: "past-week", + label: (0, import_i18n34.__)("Past week"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 7); + } + }, + { + id: "past-month", + label: (0, import_i18n34.__)("Past month"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subMonths(today, 1); + } + } +]; +var DATE_RANGE_PRESETS = [ + { + id: "last-7-days", + label: (0, import_i18n34.__)("Last 7 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 7), today]; + } + }, + { + id: "last-30-days", + label: (0, import_i18n34.__)("Last 30 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 30), today]; + } + }, + { + id: "month-to-date", + label: (0, import_i18n34.__)("Month to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfMonth(today), today]; + } + }, + { + id: "last-year", + label: (0, import_i18n34.__)("Last year"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subYears(today, 1), today]; + } + }, + { + id: "year-to-date", + label: (0, import_i18n34.__)("Year to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfYear(today), today]; + } + } +]; +var parseDate = (dateString) => { + if (!dateString) { + return null; + } + const parsed = (0, import_date4.getDate)(dateString); + return parsed && isValid(parsed) ? parsed : null; +}; +var formatDate = (date) => { + if (!date) { + return ""; + } + return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); +}; +function ValidatedDateControl({ + field, + validity, + inputRefs, + isTouched, + setIsTouched, + children +}) { + const { isValid: isValid2 } = field; + const [customValidity, setCustomValidity] = (0, import_element43.useState)(void 0); + const validateRefs = (0, import_element43.useCallback)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + for (const ref of refs) { + const input = ref.current; + if (input && !input.validity.valid) { + setCustomValidity({ + type: "invalid", + message: input.validationMessage + }); + return; + } + } + setCustomValidity(void 0); + }, [inputRefs]); + (0, import_element43.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + for (const ref of refs) { + const input = ref.current; + if (input) { + input.setCustomValidity( + result?.type === "invalid" && result.message ? result.message : "" + ); + } + } + }, [inputRefs, isValid2, validity]); + (0, import_element43.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const handleInvalid = (event) => { + event.preventDefault(); + setIsTouched(true); + }; + for (const ref of refs) { + ref.current?.addEventListener("invalid", handleInvalid); + } + return () => { + for (const ref of refs) { + ref.current?.removeEventListener("invalid", handleInvalid); + } + }; + }, [inputRefs, setIsTouched]); + (0, import_element43.useEffect)(() => { + if (!isTouched) { + return; + } + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + if (result) { + setCustomValidity(result); + } else { + validateRefs(); + } + }, [isTouched, isValid2, validity, validateRefs]); + const onBlur = (event) => { + if (isTouched) { + return; + } + if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { + setIsTouched(true); + } + }; + return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { onBlur, children: [ + children, + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( + "p", + { + className: clsx_default( + "components-validated-control__indicator", + customValidity.type === "invalid" ? "is-invalid" : void 0 + ), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.Icon, + { + className: "components-validated-control__indicator-icon", + icon: error_default, + size: 16, + fill: "currentColor" + } + ), + customValidity.message + ] + } + ) }) + ] }); +} +function CalendarDateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { + id, + label, + setValue, + getValue, + isValid: isValid2, + format: fieldFormat + } = field; + const [selectedPresetId, setSelectedPresetId] = (0, import_element43.useState)( + null + ); + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element43.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element43.useState)(false); + const validityTargetRef = (0, import_element43.useRef)(null); + const onChangeCallback = (0, import_element43.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element43.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element43.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element43.useCallback)( + (newValue) => { + onChangeCallback(newValue); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const { + timezone: { string: timezoneString } + } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: validityTargetRef, + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + disabled: !!selectedPresetId, + accessibleWhenDisabled: false, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: validityTargetRef, + type: "date", + label: (0, import_i18n34.__)("Date"), + hideLabelFromVision: true, + value, + onChange: handleManualDateChange, + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + DateCalendar2, + { + style: { width: "100%" }, + selected: value ? parseDate(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function CalendarDateRangeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, getValue, setValue, format: fieldFormat } = field; + let value; + const fieldValue = getValue({ item: data }); + if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { + value = fieldValue; + } + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const onChangeCallback = (0, import_element43.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element43.useState)( + null + ); + const selectedRange = (0, import_element43.useMemo)(() => { + if (!value) { + return { from: void 0, to: void 0 }; + } + const [from, to] = value; + return { + from: parseDate(from) || void 0, + to: parseDate(to) || void 0 + }; + }, [value]); + const [calendarMonth, setCalendarMonth] = (0, import_element43.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element43.useState)(false); + const fromInputRef = (0, import_element43.useRef)(null); + const toInputRef = (0, import_element43.useRef)(null); + const updateDateRange = (0, import_element43.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element43.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element43.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element43.useCallback)( + (fromOrTo, newValue) => { + const [currentFrom, currentTo] = value || [ + void 0, + void 0 + ]; + const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; + const updatedTo = fromOrTo === "to" ? newValue : currentTo; + updateDateRange(updatedFrom, updatedTo); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [value, updateDateRange] + ); + const { timezone } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (field.isValid?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!field.isValid?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: [fromInputRef, toInputRef], + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_RANGE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + accessibleWhenDisabled: false, + disabled: !!selectedPresetId, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "space-between", + className: "dataviews-controls__date-range-inputs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: fromInputRef, + type: "date", + label: (0, import_i18n34.__)("From"), + hideLabelFromVision: true, + value: value?.[0], + onChange: (newValue) => handleManualDateChange("from", newValue), + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components34.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: toInputRef, + type: "date", + label: (0, import_i18n34.__)("To"), + hideLabelFromVision: true, + value: value?.[1], + onChange: (newValue) => handleManualDateChange("to", newValue), + required: !!field.isValid?.required + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + DateRangeCalendar, + { + style: { width: "100%" }, + selected: selectedRange, + onSelect: onSelectCalendarRange, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezone.string || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function DateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__date", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + if (operator === OPERATOR_BETWEEN) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + CalendarDateRangeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + CalendarDateControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components36 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components35 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components35.privateApis); +function ValidatedText({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + type, + prefix, + suffix, + validity +}) { + const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element44.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedInputControl2, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + hideLabelFromVision, + type, + prefix, + suffix, + pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components36.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components37 = __toESM(require_components(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components37.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components38 = __toESM(require_components(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components38.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components38.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components39.privateApis); +function toNumberOrEmpty(value) { + if (value === "" || value === void 0) { + return ""; + } + const number = Number(value); + return Number.isFinite(number) ? number : ""; +} +function BetweenControls({ + value, + onChange, + hideLabelFromVision, + step +}) { + const [min = "", max = ""] = value; + const onChangeMin = (0, import_element45.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element45.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + import_components39.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_components39.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + import_components39.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Min."), + value: min, + max: max ? Number(max) - step : void 0, + onChange: onChangeMin, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ), + /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + import_components39.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Max."), + value: max, + min: min ? Number(min) + step : void 0, + onChange: onChangeMax, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ) + ] }) + } + ); +} +function ValidatedNumber({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + const decimals = field.format?.decimals ?? 0; + const step = Math.pow(10, Math.abs(decimals) * -1); + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element45.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + // Do not convert an empty string or undefined to a number, + // otherwise there's a mismatch between the UI control (empty) + // and the data relied by onChange (0). + value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) + }) + ); + }, + [data, onChange, setValue] + ); + const onChangeBetweenControls = (0, import_element45.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + if (operator === OPERATOR_BETWEEN) { + let valueBetween = ["", ""]; + if (Array.isArray(value) && value.length === 2 && value.every( + (element) => typeof element === "number" || element === "" + )) { + valueBetween = value; + } + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedNumberControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + value, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + step, + min: isValid2.min ? isValid2.min.constraint : void 0, + max: isValid2.max ? isValid2.max.constraint : void 0 + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/integer.mjs +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components40.privateApis); +function Radio({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = getValue({ item: data }); + const onChangeControl = (0, import_element46.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_components40.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + ValidatedRadioControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + onChange: onChangeControl, + options: elements, + selected: value, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/select.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components41.privateApis); +function Select({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { type, label, description, getValue, setValue, isValid: isValid2 } = field; + const isMultiple = type === "array"; + const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); + const onChangeControl = (0, import_element47.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_components41.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ValidatedSelectControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + options: elements, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + multiple: isMultiple + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/text.mjs +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +function Text2({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + prefix: prefix ? (0, import_element48.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element48.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleControl } = unlock(import_components42.privateApis); +function Toggle({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const onChangeControl = (0, import_element49.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ValidatedToggleControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/textarea.mjs +var import_components43 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +var { ValidatedTextareaControl } = unlock(import_components43.privateApis); +function Textarea({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { rows = 4 } = config || {}; + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }); + const onChangeControl = (0, import_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedTextareaControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + rows, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs +var import_components44 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleGroupControl } = unlock(import_components44.privateApis); +function ToggleGroup({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element51.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_components44.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + ValidatedToggleGroupControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + __next40pxDefaultSize: true, + isBlock: true, + label: field.label, + help: selectedOption?.description || field.description, + onChange: onChangeControl, + value, + hideLabelFromVision, + children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + import_components44.__experimentalToggleGroupControlOption, + { + label: el.label, + value: el.value + }, + el.value + )) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/array.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +var { ValidatedFormTokenField } = unlock(import_components45.privateApis); +function ArrayControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const arrayValueAsElements = (0, import_element52.useMemo)( + () => Array.isArray(value) ? value.map((token) => { + const element = elements?.find( + (suggestion) => suggestion.value === token + ); + return element || { value: token, label: token }; + }) : [], + [value, elements] + ); + const onChangeControl = (0, import_element52.useCallback)( + (tokens) => { + const valueTokens = tokens.map((token) => { + if (typeof token === "object" && "value" in token) { + return token.value; + } + return token; + }); + onChange(setValue({ item: data, value: valueTokens })); + }, + [onChange, setValue, data] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_components45.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( + ValidatedFormTokenField, + { + required: !!isValid2?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label: hideLabelFromVision ? void 0 : label, + value: arrayValueAsElements, + onChange: onChangeControl, + placeholder, + suggestions: elements?.map((element) => element.value), + __experimentalValidateInput: (token) => { + if (field.isValid?.elements && elements) { + return elements.some( + (element) => element.value === token || element.label === token + ); + } + return true; + }, + __experimentalExpandOnFocus: elements && elements.length > 0, + __experimentalShowHowTo: !field.isValid?.elements, + displayTransform: (token) => { + if (typeof token === "object" && "label" in token) { + return token.label; + } + if (typeof token === "string" && elements) { + const element = elements.find( + (el) => el.value === token + ); + return element?.label || token; + } + return token; + }, + __experimentalRenderItem: ({ item }) => { + if (typeof item === "string" && elements) { + const element = elements.find( + (el) => el.value === item + ); + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { children: item }); + } + } + ); +} + +// node_modules/colord/index.mjs +var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; +var t = function(r3) { + return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; +}; +var n = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; +}; +var e = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; +}; +var u = function(r3) { + return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; +}; +var a = function(r3) { + return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; +}; +var o = function(r3) { + return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; +}; +var i = /^#([0-9a-f]{3,8})$/i; +var s = function(r3) { + var t2 = r3.toString(16); + return t2.length < 2 ? "0" + t2 : t2; +}; +var h = function(r3) { + var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0; + return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; +}; +var b = function(r3) { + var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6; + return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 }; +}; +var g = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; +}; +var d = function(r3) { + return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; +}; +var f = function(r3) { + return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; +}; +var c = function(r3) { + return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; +}; +var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var y = { string: [[function(r3) { + var t2 = i.exec(r3); + return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; +}, "hex"], [function(r3) { + var t2 = v.exec(r3) || m.exec(r3); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; +}, "rgb"], [function(t2) { + var n2 = l.exec(t2) || p.exec(t2); + if (!n2) return null; + var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(a2); +}, "hsl"]], object: [[function(r3) { + var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2; + return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; +}, "rgb"], [function(r3) { + var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2; + if (!t(n2) || !t(e2) || !t(u2)) return null; + var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) }); + return f(i2); +}, "hsl"], [function(r3) { + var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; + if (!t(n2) || !t(a2) || !t(o2)) return null; + var h2 = (function(r4) { + return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; + })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) }); + return b(h2); +}, "hsv"]] }; +var N = function(r3, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r3); + if (e2) return [e2, t2[n2][1]]; + } + return [null, void 0]; +}; +var x = function(r3) { + return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; +}; +var M = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; +}; +var H = function(r3) { + return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; +}; +var $ = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; +}; +var j = (function() { + function r3(r4) { + this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r3.prototype.isValid = function() { + return null !== this.parsed; + }, r3.prototype.brightness = function() { + return n(H(this.rgba), 2); + }, r3.prototype.isDark = function() { + return H(this.rgba) < 0.5; + }, r3.prototype.isLight = function() { + return H(this.rgba) >= 0.5; + }, r3.prototype.toHex = function() { + return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2; + var r4, t2, e2, u2, a2, i2; + }, r3.prototype.toRgb = function() { + return o(this.rgba); + }, r3.prototype.toRgbString = function() { + return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsl = function() { + return d(c(this.rgba)); + }, r3.prototype.toHslString = function() { + return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsv = function() { + return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; + var r4; + }, r3.prototype.invert = function() { + return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); + var r4; + }, r3.prototype.saturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); + }, r3.prototype.desaturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); + }, r3.prototype.grayscale = function() { + return w(M(this.rgba, -1)); + }, r3.prototype.lighten = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); + }, r3.prototype.darken = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); + }, r3.prototype.rotate = function(r4) { + return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); + }, r3.prototype.alpha = function(r4) { + return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3); + var t2; + }, r3.prototype.hue = function(r4) { + var t2 = c(this.rgba); + return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r3.prototype.isEqual = function(r4) { + return this.toHex() === w(r4).toHex(); + }, r3; +})(); +var w = function(r3) { + return r3 instanceof j ? r3 : new j(r3); +}; + +// packages/dataviews/build-module/components/dataform-controls/color.mjs +var import_components46 = __toESM(require_components(), 1); +var import_element53 = __toESM(require_element(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3, Picker } = unlock(import_components46.privateApis); +var ColorPicker = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + import_components46.Dropdown, + { + renderToggle: ({ onToggle, isOpen }) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_components46.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + "button", + { + type: "button", + onClick: onToggle, + style: { + width: "24px", + height: "24px", + borderRadius: "50%", + backgroundColor: validColor, + border: "1px solid #ddd", + cursor: "pointer", + outline: isOpen ? "2px solid #007cba" : "none", + outlineOffset: "2px", + display: "flex", + alignItems: "center", + justifyContent: "center", + padding: 0, + margin: 0 + }, + "aria-label": "Open color picker" + } + ) }), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { style: { padding: "16px" }, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + Picker, + { + color: w(validColor), + onChange: onColorChange, + enableAlpha: true + } + ) }) + } + ); +}; +function Color({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }) || ""; + const handleColorChange = (0, import_element53.useCallback)( + (colorObject) => { + onChange(setValue({ item: data, value: colorObject.toHex() })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element53.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + ValidatedInputControl3, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value, + help: description, + onChange: handleInputChange, + hideLabelFromVision, + type: "text", + prefix: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + ColorPicker, + { + color: value, + onColorChange: handleColorChange + } + ) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components47 = __toESM(require_components(), 1); +var import_element54 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +function Password({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const [isVisible2, setIsVisible] = (0, import_element54.useState)(false); + const toggleVisibility = (0, import_element54.useCallback)(() => { + setIsVisible((prev) => !prev); + }, []); + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components47.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + import_components47.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n36.__)("Hide password") : (0, import_i18n36.__)("Show password") + } + ) }) + } + } + ); +} + +// packages/dataviews/build-module/field-types/utils/has-elements.mjs +function hasElements(field) { + return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; +} + +// packages/dataviews/build-module/components/dataform-controls/index.mjs +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + array: ArrayControl, + checkbox: Checkbox, + color: Color, + combobox: Combobox3, + datetime: DateTime, + date: DateControl, + email: Email, + telephone: Telephone, + url: Url, + integer: Integer, + number: Number2, + password: Password, + radio: Radio, + select: Select, + text: Text2, + toggle: Toggle, + textarea: Textarea, + toggleGroup: ToggleGroup +}; +function isEditConfig(value) { + return value && typeof value === "object" && typeof value.control === "string"; +} +function createConfiguredControl(config) { + const { control, ...controlConfig } = config; + const BaseControlType = getControlByType(control); + if (BaseControlType === null) { + return null; + } + return function ConfiguredControl(props) { + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(BaseControlType, { ...props, config: controlConfig }); + }; +} +function getControl(field, fallback) { + if (typeof field.Edit === "function") { + return field.Edit; + } + if (typeof field.Edit === "string") { + return getControlByType(field.Edit); + } + if (isEditConfig(field.Edit)) { + return createConfiguredControl(field.Edit); + } + if (hasElements(field) && field.type !== "array") { + return getControlByType("select"); + } + if (fallback === null) { + return null; + } + return getControlByType(fallback); +} +function getControlByType(type) { + if (Object.keys(FORM_CONTROLS).includes(type)) { + return FORM_CONTROLS[type]; + } + return null; +} + +// packages/dataviews/build-module/field-types/utils/get-filter-by.mjs +function getFilterBy(field, defaultOperators, validOperators) { + if (field.filterBy === false) { + return false; + } + const operators = field.filterBy?.operators?.filter( + (op) => validOperators.includes(op) + ) ?? defaultOperators; + if (operators.length === 0) { + return false; + } + return { + isPrimary: !!field.filterBy?.isPrimary, + operators + }; +} +var get_filter_by_default = getFilterBy; + +// packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs +var getValueFromId = (id) => ({ item }) => { + const path = id.split("."); + let value = item; + for (const segment of path) { + if (value.hasOwnProperty(segment)) { + value = value[segment]; + } else { + value = void 0; + } + } + return value; +}; +var get_value_from_id_default = getValueFromId; + +// packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs +var setValueFromId = (id) => ({ value }) => { + const path = id.split("."); + const result = {}; + let current = result; + for (const segment of path.slice(0, -1)) { + current[segment] = {}; + current = current[segment]; + } + current[path.at(-1)] = value; + return result; +}; +var set_value_from_id_default = setValueFromId; + +// packages/dataviews/build-module/field-types/email.mjs +var import_i18n37 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/render-from-elements.mjs +function RenderFromElements({ + item, + field +}) { + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = field.getValue({ item }); + if (isLoading) { + return value; + } + if (elements.length === 0) { + return value; + } + return elements?.find((element) => element.value === value)?.label || field.getValue({ item }); +} + +// packages/dataviews/build-module/field-types/utils/render-default.mjs +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(RenderFromElements, { item, field }); + } + return field.getValueFormatted({ item, field }); +} + +// packages/dataviews/build-module/field-types/utils/sort-text.mjs +var sort_text_default = (a2, b2, direction) => { + return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-required.mjs +function isValidRequired(item, field) { + const value = field.getValue({ item }); + return ![void 0, "", null].includes(value); +} + +// packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs +function isValidMinLength(item, field) { + if (typeof field.isValid.minLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length >= field.isValid.minLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs +function isValidMaxLength(item, field) { + if (typeof field.isValid.maxLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length <= field.isValid.maxLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs +function isValidPattern(item, field) { + if (field.isValid.pattern?.constraint === void 0) { + return true; + } + try { + const regexp = new RegExp(field.isValid.pattern.constraint); + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return regexp.test(String(value)); + } catch { + return false; + } +} + +// packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs +function isValidElements(item, field) { + const elements = field.elements ?? []; + const validValues = elements.map((el) => el.value); + if (validValues.length === 0) { + return true; + } + const value = field.getValue({ item }); + return [].concat(value).every((v2) => validValues.includes(v2)); +} + +// packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs +function getValueFormatted({ + item, + field +}) { + return field.getValue({ item }); +} +var get_value_formatted_default_default = getValueFormatted; + +// packages/dataviews/build-module/field-types/email.mjs +var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +function isValidCustom(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { + return (0, import_i18n37.__)("Value must be a valid email address."); + } + return null; +} +var email_default = { + type: "email", + render, + Edit: "email", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements, + custom: isValidCustom + } +}; + +// packages/dataviews/build-module/field-types/integer.mjs +var import_i18n38 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/sort-number.mjs +var sort_number_default = (a2, b2, direction) => { + return direction === "asc" ? a2 - b2 : b2 - a2; +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-min.mjs +function isValidMin(item, field) { + if (typeof field.isValid.min?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) >= field.isValid.min.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max.mjs +function isValidMax(item, field) { + if (typeof field.isValid.max?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) <= field.isValid.max.constraint; +} + +// packages/dataviews/build-module/field-types/integer.mjs +var format2 = { + separatorThousand: "," +}; +function getValueFormatted2({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatInteger; + if (field.type !== "integer") { + formatInteger = format2; + } else { + formatInteger = field.format; + } + const { separatorThousand } = formatInteger; + const integerValue = Math.trunc(value); + if (!separatorThousand) { + return String(integerValue); + } + return String(integerValue).replace( + /\B(?=(\d{3})+(?!\d))/g, + separatorThousand + ); +} +function isValidCustom2(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { + return (0, import_i18n38.__)("Value must be an integer."); + } + return null; +} +var integer_default = { + type: "integer", + render, + Edit: "integer", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format2, + getValueFormatted: getValueFormatted2, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom2 + } +}; + +// packages/dataviews/build-module/field-types/number.mjs +var import_i18n39 = __toESM(require_i18n(), 1); +var format3 = { + separatorThousand: ",", + separatorDecimal: ".", + decimals: 2 +}; +function getValueFormatted3({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatNumber; + if (field.type !== "number") { + formatNumber = format3; + } else { + formatNumber = field.format; + } + const { separatorThousand, separatorDecimal, decimals } = formatNumber; + const fixedValue = value.toFixed(decimals); + const [integerPart, decimalPart] = fixedValue.split("."); + const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; + return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; +} +function isEmpty2(value) { + return value === "" || value === void 0 || value === null; +} +function isValidCustom3(item, field) { + const value = field.getValue({ item }); + if (!isEmpty2(value) && !Number.isFinite(value)) { + return (0, import_i18n39.__)("Value must be a number."); + } + return null; +} +var number_default = { + type: "number", + render, + Edit: "number", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format3, + getValueFormatted: getValueFormatted3, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom3 + } +}; + +// packages/dataviews/build-module/field-types/text.mjs +var text_default = { + type: "text", + render, + Edit: "text", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + // Single selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/datetime.mjs +var import_date6 = __toESM(require_date(), 1); +var format4 = { + datetime: (0, import_date6.getSettings)().formats.datetime, + weekStartsOn: (0, import_date6.getSettings)().l10n.startOfWeek +}; +function getValueFormatted4({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDatetime; + if (field.type !== "datetime") { + formatDatetime = format4; + } else { + formatDatetime = field.format; + } + return (0, import_date6.dateI18n)(formatDatetime.datetime, (0, import_date6.getDate)(value)); +} +var sort = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var datetime_default = { + type: "datetime", + render, + Edit: "datetime", + sort, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + format: format4, + getValueFormatted: getValueFormatted4, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/date.mjs +var import_date7 = __toESM(require_date(), 1); +var format5 = { + date: (0, import_date7.getSettings)().formats.date, + weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek +}; +function getValueFormatted5({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDate2; + if (field.type !== "date") { + formatDate2 = format5; + } else { + formatDate2 = field.format; + } + return (0, import_date7.dateI18n)(formatDate2.date, (0, import_date7.getDate)(value)); +} +var sort2 = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var date_default = { + type: "date", + render, + Edit: "date", + sort: sort2, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + format: format5, + getValueFormatted: getValueFormatted5, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/boolean.mjs +var import_i18n40 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs +function isValidRequiredForBool(item, field) { + const value = field.getValue({ item }); + return value === true; +} + +// packages/dataviews/build-module/field-types/boolean.mjs +function getValueFormatted6({ + item, + field +}) { + const value = field.getValue({ item }); + if (value === true) { + return (0, import_i18n40.__)("True"); + } + if (value === false) { + return (0, import_i18n40.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n40.__)("Value must be true, false, or undefined"); + } + return null; +} +var sort3 = (a2, b2, direction) => { + const boolA = Boolean(a2); + const boolB = Boolean(b2); + if (boolA === boolB) { + return 0; + } + if (direction === "asc") { + return boolA ? 1 : -1; + } + return boolA ? -1 : 1; +}; +var boolean_default = { + type: "boolean", + render, + Edit: "checkbox", + sort: sort3, + validate: { + required: isValidRequiredForBool, + elements: isValidElements, + custom: isValidCustom4 + }, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + format: {}, + getValueFormatted: getValueFormatted6 +}; + +// packages/dataviews/build-module/field-types/media.mjs +var media_default = { + type: "media", + render: () => null, + Edit: null, + sort: () => 0, + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: get_value_formatted_default_default, + // cannot validate any constraint, so + // the only available validation for the field author + // would be providing a custom validator. + validate: {} +}; + +// packages/dataviews/build-module/field-types/array.mjs +var import_i18n41 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs +function isValidRequiredForArray(item, field) { + const value = field.getValue({ item }); + return Array.isArray(value) && value.length > 0 && value.every( + (element) => ![void 0, "", null].includes(element) + ); +} + +// packages/dataviews/build-module/field-types/array.mjs +function getValueFormatted7({ + item, + field +}) { + const value = field.getValue({ item }); + const arr = Array.isArray(value) ? value : []; + return arr.join(", "); +} +function render2({ item, field }) { + return getValueFormatted7({ item, field }); +} +function isValidCustom5(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Array.isArray(value)) { + return (0, import_i18n41.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n41.__)("Every value must be a string."); + } + return null; +} +var sort4 = (a2, b2, direction) => { + const arrA = Array.isArray(a2) ? a2 : []; + const arrB = Array.isArray(b2) ? b2 : []; + if (arrA.length !== arrB.length) { + return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; + } + const joinedA = arrA.join(","); + const joinedB = arrB.join(","); + return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); +}; +var array_default = { + type: "array", + render: render2, + Edit: "array", + sort: sort4, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: getValueFormatted7, + validate: { + required: isValidRequiredForArray, + elements: isValidElements, + custom: isValidCustom5 + } +}; + +// packages/dataviews/build-module/field-types/password.mjs +function getValueFormatted8({ + item, + field +}) { + return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; +} +var password_default = { + type: "password", + render, + Edit: "password", + sort: () => 0, + // Passwords should not be sortable for security reasons + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: getValueFormatted8, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/telephone.mjs +var telephone_default = { + type: "telephone", + render, + Edit: "telephone", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/color.mjs +var import_i18n42 = __toESM(require_i18n(), 1); +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(RenderFromElements, { item, field }); + } + const value = get_value_formatted_default_default({ item, field }); + if (!value || !w(value).isValid()) { + return value; + } + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { children: value }) + ] }); +} +function isValidCustom6(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !w(value).isValid()) { + return (0, import_i18n42.__)("Value must be a valid color."); + } + return null; +} +var sort5 = (a2, b2, direction) => { + const colorA = w(a2); + const colorB = w(b2); + if (!colorA.isValid() && !colorB.isValid()) { + return 0; + } + if (!colorA.isValid()) { + return direction === "asc" ? 1 : -1; + } + if (!colorB.isValid()) { + return direction === "asc" ? -1 : 1; + } + const hslA = colorA.toHsl(); + const hslB = colorB.toHsl(); + if (hslA.h !== hslB.h) { + return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; + } + if (hslA.s !== hslB.s) { + return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; + } + return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; +}; +var color_default = { + type: "color", + render: render3, + Edit: "color", + sort: sort5, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_IS_ANY, + OPERATOR_IS_NONE + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements, + custom: isValidCustom6 + } +}; + +// packages/dataviews/build-module/field-types/url.mjs +var url_default = { + type: "url", + render, + Edit: "url", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/no-type.mjs +var sort6 = (a2, b2, direction) => { + if (typeof a2 === "number" && typeof b2 === "number") { + return sort_number_default(a2, b2, direction); + } + return sort_text_default(a2, b2, direction); +}; +var no_type_default = { + // type: no type for this one + render, + Edit: null, + sort: sort6, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: getAllOperatorNames(), + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/utils/get-is-valid.mjs +function getIsValid(field, fieldType) { + let required; + if (field.isValid?.required === true && fieldType.validate.required !== void 0) { + required = { + constraint: true, + validate: fieldType.validate.required + }; + } + let elements; + if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out + field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { + elements = { + constraint: true, + validate: fieldType.validate.elements + }; + } + let min; + if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { + min = { + constraint: field.isValid.min, + validate: fieldType.validate.min + }; + } + let max; + if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { + max = { + constraint: field.isValid.max, + validate: fieldType.validate.max + }; + } + let minLength; + if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { + minLength = { + constraint: field.isValid.minLength, + validate: fieldType.validate.minLength + }; + } + let maxLength; + if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { + maxLength = { + constraint: field.isValid.maxLength, + validate: fieldType.validate.maxLength + }; + } + let pattern; + if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { + pattern = { + constraint: field.isValid?.pattern, + validate: fieldType.validate.pattern + }; + } + const custom = field.isValid?.custom ?? fieldType.validate.custom; + return { + required, + elements, + min, + max, + minLength, + maxLength, + pattern, + custom + }; +} + +// packages/dataviews/build-module/field-types/utils/get-filter.mjs +function getFilter(fieldType) { + return fieldType.validOperators.reduce((accumulator, operator) => { + const operatorObj = getOperatorByName(operator); + if (operatorObj?.filter) { + accumulator[operator] = operatorObj.filter; + } + return accumulator; + }, {}); +} + +// packages/dataviews/build-module/field-types/utils/get-format.mjs +function getFormat(field, fieldType) { + return { + ...fieldType.format, + ...field.format + }; +} +var get_format_default = getFormat; + +// packages/dataviews/build-module/field-types/index.mjs +function getFieldTypeByName(type) { + const found = [ + email_default, + integer_default, + number_default, + text_default, + datetime_default, + date_default, + boolean_default, + media_default, + array_default, + password_default, + telephone_default, + color_default, + url_default + ].find((fieldType) => fieldType?.type === type); + if (!!found) { + return found; + } + return no_type_default; +} +function normalizeFields(fields) { + return fields.map((field) => { + const fieldType = getFieldTypeByName(field.type); + const getValue = field.getValue || get_value_from_id_default(field.id); + const sort7 = function(a2, b2, direction) { + const aValue = getValue({ item: a2 }); + const bValue = getValue({ item: b2 }); + return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); + }; + return { + id: field.id, + label: field.label || field.id, + header: field.header || field.label || field.id, + description: field.description, + placeholder: field.placeholder, + getValue, + setValue: field.setValue || set_value_from_id_default(field.id), + elements: field.elements, + getElements: field.getElements, + hasElements: hasElements(field), + isVisible: field.isVisible, + enableHiding: field.enableHiding ?? true, + readOnly: field.readOnly ?? false, + // The type provides defaults for the following props + type: fieldType.type, + render: field.render ?? fieldType.render, + Edit: getControl(field, fieldType.Edit), + sort: sort7, + enableSorting: field.enableSorting ?? fieldType.enableSorting, + enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, + isValid: getIsValid(field, fieldType), + filterBy: get_filter_by_default( + field, + fieldType.defaultOperators, + fieldType.validOperators + ), + filter: getFilter(fieldType), + format: get_format_default(field, fieldType), + getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted + }; + }); +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); +var defaultGetItemId = (item) => item.id; +var defaultIsItemClickable = () => true; +var EMPTY_ARRAY6 = []; +var dataViewsLayouts = VIEW_LAYOUTS.filter( + (viewLayout) => !viewLayout.isPicker +); +function DefaultUI({ + header, + search = true, + searchLabel = void 0 +}) { + return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DataViewsFooter, {}) + ] }); +} +function DataViews({ + view, + onChangeView, + fields, + search = true, + searchLabel = void 0, + actions = EMPTY_ARRAY6, + data, + getItemId: getItemId2 = defaultGetItemId, + getItemLevel, + isLoading = false, + paginationInfo, + defaultLayouts: defaultLayoutsProperty, + selection: selectionProperty, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable = defaultIsItemClickable, + header, + children, + config = { perPageSizes: [10, 20, 50, 100] }, + empty +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element55.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element55.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element55.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element55.useState)(null); + function setSelectionWithChange(value) { + const newValue = typeof value === "function" ? value(selection) : value; + if (isUncontrolled) { + setSelectionState(newValue); + } + if (onChangeSelection) { + onChangeSelection(newValue); + } + } + const _fields = (0, import_element55.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element55.useMemo)(() => { + return selection.filter( + (id) => data.some((item) => getItemId2(item) === id) + ); + }, [selection, data, getItemId2]); + const filters = use_filters_default(_fields, view); + const hasPrimaryOrLockedFilters = (0, import_element55.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element55.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element55.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element55.useEffect)(() => { + if (!view.infiniteScrollEnabled || !containerRef.current) { + return; + } + const handleScroll = (0, import_compose12.throttle)((event) => { + const target = event.target; + const scrollTop = target.scrollTop; + const scrollHeight = target.scrollHeight; + const clientHeight = target.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 100) { + infiniteScrollHandler?.(); + } + }, 100); + const container = containerRef.current; + container.addEventListener("scroll", handleScroll); + return () => { + container.removeEventListener("scroll", handleScroll); + handleScroll.cancel(); + }; + }, [infiniteScrollHandler, view.infiniteScrollEnabled]); + const defaultLayouts = (0, import_element55.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data, + isLoading, + paginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInfiniteScrollHandler: !!infiniteScrollHandler + }, + children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + DefaultUI, + { + header, + search, + searchLabel + } + ) }) + } + ); +} +var DataViewsSubComponents = DataViews; +DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; +DataViewsSubComponents.Filters = filters_default; +DataViewsSubComponents.FiltersToggled = filters_toggled_default; +DataViewsSubComponents.FiltersToggle = toggle_default; +DataViewsSubComponents.Layout = DataViewsLayout; +DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; +DataViewsSubComponents.Pagination = DataViewsPagination; +DataViewsSubComponents.Search = dataviews_search_default; +DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; +DataViewsSubComponents.Footer = DataViewsFooter; +var dataviews_default = DataViewsSubComponents; + +// routes/navigation-list/stage.tsx +var import_components49 = __toESM(require_components()); +var import_editor = __toESM(require_editor()); + +// routes/lock-unlock.ts +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" +); + +// routes/navigation-list/view-utils.ts +var DEFAULT_VIEW = { + type: "list", + sort: { + field: "date", + direction: "desc" + }, + titleField: "title" +}; +function getDefaultView() { + return DEFAULT_VIEW; +} + +// routes/navigation-list/actions/edit-navigation.tsx +var import_i18n43 = __toESM(require_i18n()); +import { useNavigate } from "@wordpress/route"; +function useEditNavigationAction() { + const navigate = useNavigate(); + return { + id: "edit", + label: (0, import_i18n43.__)("Edit"), + isPrimary: true, + icon: pencil_default, + callback: (items) => { + const item = items[0]; + navigate({ + to: `/navigation/edit/${item.id}` + }); + }, + isEligible(item) { + return item.type === "wp_navigation" && String(item.status) !== "trash"; + } + }; +} + +// routes/navigation-list/add-navigation.tsx +var import_element56 = __toESM(require_element()); +var import_i18n44 = __toESM(require_i18n()); +var import_core_data = __toESM(require_core_data()); +var import_notices = __toESM(require_notices()); +var import_data8 = __toESM(require_data()); +var import_components48 = __toESM(require_components()); +import { useNavigate as useNavigate2 } from "@wordpress/route"; +var NAVIGATION_POST_TYPE = "wp_navigation"; +var AddNavigationModal = ({ + closeModal +}) => { + const [menuTitle, setMenuTitle] = (0, import_element56.useState)(""); + const [isBusy, setIsBusy] = (0, import_element56.useState)(false); + const navigate = useNavigate2(); + const { saveEntityRecord } = (0, import_data8.useDispatch)(import_core_data.store); + const { createSuccessNotice, createErrorNotice } = (0, import_data8.useDispatch)(import_notices.store); + const handleConfirmAdd = async () => { + if (!menuTitle || !menuTitle.trim()) { + return; + } + const trimmedTitle = menuTitle.trim(); + setIsBusy(true); + try { + const savedRecord = await saveEntityRecord( + "postType", + NAVIGATION_POST_TYPE, + { + title: trimmedTitle, + status: "publish" + }, + { + throwOnError: true + } + ); + if (savedRecord) { + createSuccessNotice( + (0, import_i18n44.__)("Navigation menu created successfully."), + { + type: "snackbar" + } + ); + navigate({ + to: `/navigation/edit/${encodeURIComponent( + savedRecord.id + )}` + }); + } + } catch (error) { + const errorMessage = error instanceof Error ? error.message : "Unknown error"; + createErrorNotice( + (0, import_i18n44.sprintf)( + /* translators: %s: error message describing why the navigation menu could not be created. */ + (0, import_i18n44.__)("Unable to create navigation menu: %s"), + errorMessage + ), + { + type: "snackbar" + } + ); + } + setIsBusy(false); + closeModal?.(); + }; + return /* @__PURE__ */ React.createElement( + import_components48.Modal, + { + title: (0, import_i18n44.__)("Add New Navigation Menu"), + onRequestClose: () => closeModal?.(), + focusOnMount: "firstContentElement", + size: "small" + }, + /* @__PURE__ */ React.createElement( + "form", + { + onSubmit: (event) => { + event.preventDefault(); + handleConfirmAdd(); + } + }, + /* @__PURE__ */ React.createElement(import_components48.__experimentalVStack, { spacing: 4 }, /* @__PURE__ */ React.createElement( + import_components48.TextControl, + { + autoComplete: "off", + value: menuTitle, + onChange: setMenuTitle, + label: (0, import_i18n44.__)("Name"), + placeholder: (0, import_i18n44.__)("Enter menu name"), + disabled: isBusy + } + ), /* @__PURE__ */ React.createElement(import_components48.__experimentalHStack, { justify: "right", spacing: 2 }, /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "tertiary", + onClick: closeModal, + disabled: isBusy, + accessibleWhenDisabled: true + }, + (0, import_i18n44.__)("Cancel") + ), /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "primary", + type: "submit", + "aria-busy": isBusy, + disabled: isBusy || !menuTitle?.trim(), + accessibleWhenDisabled: true + }, + (0, import_i18n44.__)("Create Menu") + ))) + ) + ); +}; + +// routes/navigation-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='4cd54e4f28']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "4cd54e4f28"); + style.appendChild(document.createTextNode("")); + document.head.appendChild(style); +} + +// routes/navigation-list/stage.tsx +var { useEntityRecordsWithPermissions } = unlock2(import_core_data2.privateApis); +var { usePostActions, usePostFields } = unlock2(import_editor.privateApis); +var NAVIGATION_POST_TYPE2 = "wp_navigation"; +var PRELOADED_NAVIGATION_MENUS_QUERY = { + per_page: 100, + status: ["publish", "draft"], + order: "desc", + orderby: "date" +}; +function getItemId(item) { + return item.id.toString(); +} +function NavigationList() { + const navigate = useNavigate3(); + const searchParams = useSearch({ from: "/navigation/list" }); + const defaultView = (0, import_element57.useMemo)(() => { + return getDefaultView(); + }, []); + const handleQueryParamsChange = (0, import_element57.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, updateView, isModified, resetToDefault } = useView({ + kind: "postType", + name: NAVIGATION_POST_TYPE2, + slug: "default-new", + defaultView, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const { + records: navigationMenus, + totalItems, + totalPages, + isResolving + } = useEntityRecordsWithPermissions( + "postType", + NAVIGATION_POST_TYPE2, + PRELOADED_NAVIGATION_MENUS_QUERY + ); + const fields = usePostFields({ + postType: NAVIGATION_POST_TYPE2 + }); + const [showAddModal, setShowAddModal] = (0, import_element57.useState)(false); + const editAction = useEditNavigationAction(); + const postTypeActions = usePostActions({ + postType: NAVIGATION_POST_TYPE2, + context: "list" + }); + const actions = (0, import_element57.useMemo)(() => { + return [ + editAction, + ...postTypeActions?.flatMap((action) => { + switch (action.id) { + // Skip revisions as Gutenberg does not support it in this context + case "view-post-revisions": + return []; + } + return [action]; + }) ?? [] + ]; + }, [editAction, postTypeActions]); + const selection = (searchParams.ids ?? []).map((id) => id.toString()) ?? []; + const firstNavigationId = (0, import_element57.useMemo)(() => { + if (navigationMenus && navigationMenus.length > 0) { + return navigationMenus[0].id.toString(); + } + return null; + }, [navigationMenus]); + if (selection.length === 0 && firstNavigationId) { + selection.push(firstNavigationId); + } + if (view.type === "list") { + selection.splice(1); + } + return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement( + page_default, + { + title: (0, import_i18n45.__)("Navigation"), + className: "navigation-page", + hasPadding: false, + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components49.Button, + { + variant: "tertiary", + size: "compact", + onClick: resetToDefault + }, + (0, import_i18n45.__)("Reset view") + ), /* @__PURE__ */ React.createElement( + import_components49.Button, + { + variant: "primary", + size: "compact", + onClick: () => setShowAddModal(true) + }, + (0, import_i18n45.__)("Add New") + )) + }, + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: navigationMenus, + fields, + view, + onChangeView: updateView, + isLoading: isResolving || !fields, + actions, + paginationInfo: { + totalItems, + totalPages + }, + defaultLayouts: { + list: {} + }, + getItemId, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + ids: items.length > 0 ? items.map((id) => Number(id)) : void 0 + } + }); + } + } + ) + ), showAddModal && /* @__PURE__ */ React.createElement( + AddNavigationModal, + { + closeModal: () => setShowAddModal(false) + } + )); +} +var stage = NavigationList; +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. + *) +*/ diff --git a/src/wp-includes/build/routes/navigation-list/content.min.asset.php b/src/wp-includes/build/routes/navigation-list/content.min.asset.php new file mode 100644 index 0000000000000..e0f9446c92f5d --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/content.min.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-warning'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'c0447e70356bd5661acb'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/navigation-list/content.min.js b/src/wp-includes/build/routes/navigation-list/content.min.js new file mode 100644 index 0000000000000..94c4967c0ac82 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/content.min.js @@ -0,0 +1,14 @@ +var Eh=Object.create;var xc=Object.defineProperty;var Oh=Object.getOwnPropertyDescriptor;var Ph=Object.getOwnPropertyNames;var Ah=Object.getPrototypeOf,Ih=Object.prototype.hasOwnProperty;var Be=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Vh=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ph(t))!Ih.call(e,n)&&n!==r&&xc(e,n,{get:()=>t[n],enumerable:!(o=Oh(t,n))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Eh(Ah(e)):{},Vh(t||!e||!e.__esModule?xc(r,"default",{value:e,enumerable:!0}):r,e));var Ts=Be((Xy,wc)=>{wc.exports=window.wp.coreData});var W=Be((Qy,yc)=>{yc.exports=window.wp.element});var Z=Be((Jy,_c)=>{_c.exports=window.wp.i18n});var Y=Be((e_,Sc)=>{Sc.exports=window.wp.components});var T=Be((t_,Cc)=>{Cc.exports=window.ReactJSXRuntime});var br=Be((g_,Fc)=>{Fc.exports=window.wp.data});var Ns=Be((h_,Lc)=>{Lc.exports=window.wp.preferences});var Rt=Be((V_,Bc)=>{Bc.exports=window.wp.compose});var me=Be((T_,jc)=>{jc.exports=window.React});var rf=Be((n1,tf)=>{tf.exports=window.ReactDOM});var nf=Be(of=>{"use strict";var Bo=me();function $h(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Kh=typeof Object.is=="function"?Object.is:$h,Zh=Bo.useState,Xh=Bo.useEffect,Qh=Bo.useLayoutEffect,Jh=Bo.useDebugValue;function eb(e,t){var r=t(),o=Zh({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return Qh(function(){n.value=r,n.getSnapshot=t,qs(n)&&i({inst:n})},[e,r,t]),Xh(function(){return qs(n)&&i({inst:n}),e(function(){qs(n)&&i({inst:n})})},[e]),Jh(r),r}function qs(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Kh(e,r)}catch{return!0}}function tb(e,t){return t()}var rb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?tb:eb;of.useSyncExternalStore=Bo.useSyncExternalStore!==void 0?Bo.useSyncExternalStore:rb});var sf=Be((a1,af)=>{"use strict";af.exports=nf()});var Ee=Be((u1,uf)=>{uf.exports=window.wp.primitives});var Tl=Be((uS,ff)=>{ff.exports=window.wp.privateApis});var Nl=Be((pS,xf)=>{xf.exports=window.wp.keycodes});var rp=Be((sV,Ma)=>{var Jm={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},ep=Object.keys(Jm).join("|"),cw=new RegExp(ep,"g"),fw=new RegExp(ep,"");function dw(e){return Jm[e]}var tp=function(e){return e.replace(cw,dw)},mw=function(e){return!!e.match(fw)};Ma.exports=tp;Ma.exports.has=mw;Ma.exports.remove=tp});var mp=Be((vV,dp)=>{"use strict";dp.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,i;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(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var ko=Be((DR,Yp)=>{Yp.exports=window.wp.date});var bv=Be((AN,hv)=>{hv.exports=window.wp.warning});var ah=Be((kF,ih)=>{ih.exports=window.wp.editor});var dh=Be((WF,fh)=>{fh.exports=window.wp.notices});var gh=c(Ts()),mo=c(W());import{useNavigate as Hy,useSearch as Wy}from"@wordpress/route";function Ec(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(0,Pc.jsx)(o,{ref:i,className:U("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));Ac.displayName="NavigableRegion";var Ic=Ac;var Dr=c(Y(),1);var Vc=c(Y(),1),{Fill:Tc,Slot:Rc}=(0,Vc.createSlotFill)("SidebarToggle");var hr=c(T(),1);function Nc({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,hr.jsxs)(Dr.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,hr.jsxs)(Dr.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,hr.jsxs)(Dr.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,hr.jsx)(Rc,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,hr.jsx)(Dr.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,hr.jsx)(Dr.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,hr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var _n=c(T(),1);function kc({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:s=!1,showSidebarToggle:l=!0}){let u=U("admin-ui-page",i);return(0,_n.jsxs)(Ic,{className:u,ariaLabel:r,children:[(r||e||t)&&(0,_n.jsx)(Nc,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:l}),s?(0,_n.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}kc.SidebarToggleFill=Tc;var Rs=kc;var Ps=c(Z());var Dc=Object.prototype.hasOwnProperty;function Mc(e,t,r){for(r of e.keys())if(Mr(r,t))return r}function Mr(e,t){var r,o,n;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((o=e.length)===t.length)for(;o--&&Mr(e[o],t[o]););return o===-1}if(r===Set){if(e.size!==t.size)return!1;for(o of e)if(n=o,n&&typeof n=="object"&&(n=Mc(t,n),!n)||!t.has(n))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(o of e)if(n=o[0],n&&typeof n=="object"&&(n=Mc(t,n),!n)||!Mr(o[1],t.get(n)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((o=e.byteLength)===t.byteLength)for(;o--&&e.getInt8(o)===t.getInt8(o););return o===-1}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===t.byteLength)for(;o--&&e[o]===t[o];);return o===-1}if(!r||typeof e=="object"){o=0;for(r in e)if(Dc.call(e,r)&&++o&&!Dc.call(t,r)||!(r in t)||!Mr(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var Sn=c(W(),1),gi=c(br(),1),Ms=c(Ns(),1);function ks(e,t,r){return`dataviews-${e}-${t}-${r}`}function Ds(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(a=>a.field)),i=(e.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(o={...o,sort:t.sort}),o}function vi(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(i=>i.field));o={...o,filters:(e.filters??[]).filter(i=>!n.has(i.field))}}return t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),o}function Rh(e,t){let r={...e};for(let o of t)delete r[o];return r}function Fs(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:s}=e,l=ks(t,r,o),u=(0,gi.useSelect)(y=>y(Ms.store).get("core/views",l),[l]),{set:d}=(0,gi.useDispatch)(Ms.store),f=u??n,m=Number(a?.page??f.page??1),p=a?.search??f.search??"",v=(0,Sn.useMemo)(()=>Ds({...f,page:m,search:p},i,n),[f,m,p,i,n]),b=!!u,x=(0,Sn.useCallback)(y=>{let E={page:y?.page,search:y?.search},P=vi(Rh(y,["page","search"]),i,n);s&&!Mr(E,{page:m,search:p})&&s(E);let A=vi(f,i,n),R=vi(n,i,n);Mr(A,P)||(Mr(P,R)?d("core/views",l,void 0):d("core/views",l,P))},[s,m,p,f,n,i,d,l]),_=(0,Sn.useCallback)(()=>{d("core/views",l,void 0)},[l,d]);return{view:v,isModified:b,updateView:x,resetToDefault:_}}var Nh=c(br(),1),kh=c(Ns(),1);var Ot=c(W(),1),Es=c(Rt(),1);var Wc=c(me(),1),Hc={};function Ls(e,t){let r=Wc.useRef(Hc);return r.current===Hc&&(r.current=e(t)),r}function Bs(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var bi=c(me(),1);function js(e,t,r,o){let n=Ls(Gc).current;return Mh(n,e,t,r,o)&&qc(n,[e,t,r,o]),n.callback}function zc(e){let t=Ls(Gc).current;return Fh(t,e)&&qc(t,e),t.callback}function Gc(){return{callback:null,cleanup:null,refs:[]}}function Mh(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function Fh(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function qc(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{for(let n=0;n=e}function Hs(e){if(!$c.isValidElement(e))return null;let t=e,r=t.props;return(Uc(19)?r?.ref:t.ref)??null}function Cn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Kc(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function Zc(e,t){return typeof e=="function"?e(t):e}function Xc(e,t){return typeof e=="function"?e(t):e}var On={};function hi(e,t,r,o,n){let i={...Ws(e,On)};return t&&(i=En(i,t)),r&&(i=En(i,r)),o&&(i=En(i,o)),n&&(i=En(i,n)),i}function Qc(e){if(e.length===0)return On;if(e.length===1)return Ws(e[0],On);let t={...Ws(e[0],On)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function Jc(e){return typeof e=="function"}function Ws(e,t){return Jc(e)?e(t):e??On}function Hh(e,t){return t?e?r=>{if(zh(r)){let n=r;Wh(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function Wh(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function zs(e,t){return t?e?t+" "+e:t:e}function zh(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Gh=Object.freeze([]),Fr=Object.freeze({});var Gs=c(me(),1);function ef(e,t,r={}){let o=t.render,n=qh(t,r);if(r.enabled===!1)return null;let i=r.state??Fr;return Yh(e,o,n,i)}function qh(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Fr,ref:a,props:s,stateAttributesMapping:l,enabled:u=!0}=t,d=u?Zc(r,i):void 0,f=u?Xc(o,i):void 0,m=u?Kc(i,l):Fr,p=u?Cn(m,Array.isArray(s)?Qc(s):s)??Fr:Fr;return typeof document<"u"&&(u?Array.isArray(a)?p.ref=zc([p.ref,Hs(n),...a]):p.ref=js(p.ref,Hs(n),a):js(null,null)),u?(d!==void 0&&(p.className=zs(p.className,d)),f!==void 0&&(p.style=Cn(p.style,f)),p):Fr}function Yh(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=hi(r,t.props);return n.ref=r.ref,bi.cloneElement(t,n)}if(e&&typeof e=="string")return Uh(e,r);throw new Error(Bs(8))}function Uh(e,t){return e==="button"?(0,Gs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Gs.createElement)("img",{alt:"",...t,key:t.key}):bi.createElement(e,t)}function lf(e){return ef(e.defaultTagName??"div",e,e)}var cf=c(W(),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 ob={stack:"_19ce0419607e1896__stack"},F=(0,cf.forwardRef)(function({direction:t,gap:r,align:o,justify:n,wrap:i,render:a,...s},l){let u={gap:r&&`var(--wpds-dimension-gap-${r})`,alignItems:o,justifyContent:n,flexDirection:t,flexWrap:i};return lf({render:a,ref:l,props:hi(s,{style:u,className:ob.stack})})});var xi=c(Ee(),1),Ys=c(T(),1),Us=(0,Ys.jsx)(xi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ys.jsx)(xi.Path,{d:"m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z"})});var wi=c(Ee(),1),$s=c(T(),1),Ks=(0,$s.jsx)(wi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,$s.jsx)(wi.Path,{d:"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"})});var yi=c(Ee(),1),Zs=c(T(),1),Xs=(0,Zs.jsx)(yi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Zs.jsx)(yi.Path,{d:"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z"})});var _i=c(Ee(),1),Qs=c(T(),1),Js=(0,Qs.jsx)(_i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Qs.jsx)(_i.Path,{d:"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z"})});var Si=c(Ee(),1),el=c(T(),1),Ci=(0,el.jsx)(Si.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,el.jsx)(Si.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z"})});var Ei=c(Ee(),1),tl=c(T(),1),Oi=(0,tl.jsx)(Ei.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,tl.jsx)(Ei.Path,{d:"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",fillRule:"evenodd",clipRule:"evenodd"})});var Pi=c(Ee(),1),rl=c(T(),1),Pn=(0,rl.jsx)(Pi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,rl.jsx)(Pi.Path,{d:"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z"})});var Ai=c(Ee(),1),ol=c(T(),1),An=(0,ol.jsx)(Ai.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ol.jsx)(Ai.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 Ii=c(Ee(),1),nl=c(T(),1),il=(0,nl.jsx)(Ii.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,nl.jsx)(Ii.Path,{fillRule:"evenodd",d:"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",clipRule:"evenodd"})});var Vi=c(Ee(),1),al=c(T(),1),sl=(0,al.jsx)(Vi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,al.jsx)(Vi.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z"})});var Ti=c(Ee(),1),ll=c(T(),1),ul=(0,ll.jsx)(Ti.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,ll.jsx)(Ti.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 Ri=c(Ee(),1),cl=c(T(),1),fl=(0,cl.jsx)(Ri.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,cl.jsx)(Ri.Path,{d:"M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"})});var Ni=c(Ee(),1),dl=c(T(),1),ml=(0,dl.jsx)(Ni.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,dl.jsx)(Ni.Path,{d:"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})});var ki=c(Ee(),1),pl=c(T(),1),In=(0,pl.jsx)(ki.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,pl.jsx)(ki.Path,{d:"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"})});var Di=c(Ee(),1),vl=c(T(),1),gl=(0,vl.jsx)(Di.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,vl.jsx)(Di.Path,{d:"M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z"})});var Mi=c(Ee(),1),hl=c(T(),1),bl=(0,hl.jsx)(Mi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,hl.jsx)(Mi.Path,{d:"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z"})});var Fi=c(Ee(),1),xl=c(T(),1),Vn=(0,xl.jsx)(Fi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,xl.jsx)(Fi.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Li=c(Ee(),1),wl=c(T(),1),Bi=(0,wl.jsx)(Li.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,wl.jsx)(Li.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 ji=c(Ee(),1),yl=c(T(),1),_l=(0,yl.jsx)(ji.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,yl.jsx)(ji.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"})});var Hi=c(Ee(),1),Sl=c(T(),1),Wi=(0,Sl.jsx)(Hi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Sl.jsx)(Hi.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 zi=c(Ee(),1),Cl=c(T(),1),El=(0,Cl.jsx)(zi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Cl.jsx)(zi.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z"})});var Gi=c(Ee(),1),Ol=c(T(),1),Pl=(0,Ol.jsx)(Gi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ol.jsx)(Gi.Path,{d:"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"})});var qi=c(Ee(),1),Al=c(T(),1),Il=(0,Al.jsx)(qi.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,Al.jsx)(qi.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})});var Yi=c(Ee(),1),Vl=c(T(),1),Tn=(0,Vl.jsx)(Yi.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,Vl.jsx)(Yi.Path,{d:"M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z"})});var Xi=c(W(),1);var Rl=c(Z(),1);var Ae="isAny",Ie="isNone",ct="isAll",ft="isNotAll",ht="between",bt="inThePast",Pt="over",Te="is",Re="isNot",Lr="lessThan",Br="greaterThan",jr="lessThanOrEqual",Hr="greaterThanOrEqual",Wr="before",zr="after",Gr="beforeInc",qr="afterInc",Zt="contains",Xt="notContains",Qt="startsWith",Yr="on",Ur="notOn",Ui=["asc","desc"],df={asc:"\u2191",desc:"\u2193"},$i={asc:"ascending",desc:"descending"},Ki={asc:(0,Rl.__)("Sort ascending"),desc:(0,Rl.__)("Sort descending")},mf={asc:Js,desc:Us},jo="table",Zi="grid",pf="list",vf="activity",gf="pickerGrid",hf="pickerTable";var bf=(0,Xi.createContext)({view:{type:jo},onChangeView:()=>{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,Xi.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});bf.displayName="DataViewsContext";var $=bf;var _r=c(Z(),1);var xo=c(Z(),1),Nn=c(Y(),1),At=c(W(),1),Bl=c(Nl(),1);var wf=c(Y(),1),yf=c(Z(),1),_f=c(T(),1);function $r({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),u=n?.getValue?.({item:r})||(0,yf.__)("(no title)");return(0,_f.jsx)(wf.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(d=>s!==d):[...e,s])},...a})}var ho=c(Y(),1),Ef=c(Z(),1),Ho=c(W(),1);var Of=c(br(),1),kl=c(Rt(),1);var Sf=c(Tl(),1),{lock:gS,unlock:J}=(0,Sf.__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/dataviews");var he=c(T(),1),{Menu:go,kebabCase:nb}=J(ho.privateApis);function ib({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(ho.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function ab({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(go.Item,{disabled:e.disabled,onClick:t,children:(0,he.jsx)(go.ItemLabel,{children:o})})}function bo({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,he.jsx)(ho.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${nb(e.id)}`,children:(0,he.jsx)(e.RenderModal,{items:t,closeModal:r})})}function Dl({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Ho.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,he.jsx)(ab,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,he.jsxs)(go.Group,{children:[a(n),n.length>0&&i.length>0&&(0,he.jsx)(go.Separator,{}),a(i)]})}function Wo({item:e,actions:t,isCompact:r}){let o=(0,Of.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Ho.useMemo)(()=>{let s=t.filter(u=>!u.isEligible||u.isEligible(e));return{primaryActions:s.filter(u=>u.isPrimary),eligibleActions:s}},[t,e]),a=(0,kl.useViewportMatch)("medium","<");return r?(0,he.jsx)(Cf,{item:e,actions:i,isSmall:!0,registry:o}):(0,he.jsxs)(F,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,he.jsx)(Ml,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function Ml({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,Ho.useState)(null);return(0,kl.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,he.jsxs)(he.Fragment,{children:[t.map(s=>(0,he.jsx)(ib,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,he.jsx)(bo,{action:n,items:[e],closeModal:()=>i(null)})]})}var zo=c(Y(),1),Qi=c(Z(),1),dt=c(W(),1),Vf=c(br(),1);var Fl=c(Rt(),1);var Kr=c(Z(),1);function Pf(e,t,r){return e>0?(0,Kr.sprintf)((0,Kr._n)("%d Item selected","%d Items selected",e),e):r>t?(0,Kr.sprintf)((0,Kr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,Kr.sprintf)((0,Kr._n)("%d Item","%d Items",t),t)}var Ue=c(T(),1);function sb({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,dt.useState)(!1);return(0,Ue.jsxs)(Ue.Fragment,{children:[(0,Ue.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,Ue.jsx)(bo,{action:e,items:t,closeModal:()=>n(!1)})]})}function Ji(e,t){return(0,dt.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function Go(e,t){return(0,dt.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function Rn({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,dt.useMemo)(()=>r.filter(l=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,Ue.jsx)(zo.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,Qi.__)("Deselect all"):(0,Qi.__)("Select all")})}function Af({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,Fl.useViewportMatch)("medium","<")?(0,Ue.jsx)(zo.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,Ue.jsx)(zo.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var Tf=[];function lb({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,Vf.useRegistry)(),i=(0,dt.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,Ue.jsx)(sb,{action:e,items:i,ActionTriggerComponent:Af},e.id):(0,Ue.jsx)(Af,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function If(e,t,r,o,n,i,a,s,l,u){let d=Pf(o.length,e.length,u.totalItems);return(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,Ue.jsx)(Rn,{selection:o,onChangeSelection:l,data:e,actions:t,getItemId:r}),(0,Ue.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:d}),(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(f=>(0,Ue.jsx)(lb,{action:f,selectedItems:i,actionInProgress:a,setActionInProgress:s},f.id)),i.length>0&&(0,Ue.jsx)(zo.Button,{icon:An,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Qi.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{l(Tf)}})]})]})}function ub({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,s]=(0,dt.useState)(null),l=(0,dt.useRef)(null),u=(0,Fl.useViewportMatch)("medium","<"),d=(0,dt.useMemo)(()=>t.filter(v=>v.supportsBulk),[t]),f=(0,dt.useMemo)(()=>o.filter(v=>d.some(b=>!b.isEligible||b.isEligible(v))),[o,d]),m=(0,dt.useMemo)(()=>o.filter(v=>e.includes(n(v))&&f.includes(v)),[e,o,n,f]),p=(0,dt.useMemo)(()=>t.filter(v=>v.supportsBulk&&(!u||v.icon)&&m.some(b=>!v.isEligible||v.isEligible(b))),[t,m,u]);if(a)l.current||(l.current=If(o,t,n,e,p,m,a,s,r,i));else return l.current&&(l.current=null),If(o,t,n,e,p,m,a,s,r,i);return l.current}function ea(){let{data:e,selection:t,actions:r=Tf,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,dt.useContext)($);return(0,Ue.jsx)(ub,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var xr=c(Z(),1);var wr=c(Y(),1),Zr=c(W(),1);function ta(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var te=c(T(),1),{Menu:pe}=J(wr.privateApis);function cb({children:e}){return Zr.Children.toArray(e).filter(Boolean).map((t,r)=>(0,te.jsxs)(Zr.Fragment,{children:[r>0&&(0,te.jsx)(pe.Separator,{}),t]},r))}var fb=(0,Zr.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:u=!0},d){let f=r.fields??[],m=f?.indexOf(t),p=r.sort?.field===t,v=!1,b=!1,x=!1,_=[],y=o.find(C=>C.id===t),{setIsShowingFilter:E}=(0,Zr.useContext)($);if(!y)return null;v=y.enableHiding!==!1,b=y.enableSorting!==!1;let P=y.header;if(_=!!y.filterBy&&y.filterBy?.operators||[],x=!r.filters?.some(C=>t===C.field)&&!!(y.hasElements||y.Edit)&&y.filterBy!==!1&&!y.filterBy?.isPrimary,!b&&!s&&!v&&!x)return P;let A=ta(r,o).filter(C=>!f.includes(C.id)),R=(l||u)&&!!A.length,D=(0,xr.isRTL)();return(0,te.jsxs)(pe,{children:[(0,te.jsxs)(pe.TriggerButton,{render:(0,te.jsx)(wr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:d,variant:"tertiary"}),children:[P,r.sort&&p&&(0,te.jsx)("span",{"aria-hidden":"true",children:df[r.sort.direction]})]}),(0,te.jsx)(pe.Popover,{style:{minWidth:"240px"},children:(0,te.jsxs)(cb,{children:[b&&(0,te.jsx)(pe.Group,{children:Ui.map(C=>{let S=r.sort&&p&&r.sort.direction===C,N=`${t}-${C}`;return(0,te.jsx)(pe.RadioItem,{name:"view-table-sorting",value:N,checked:S,onChange:()=>{n({...r,sort:{field:t,direction:C},showLevels:!1})},children:(0,te.jsx)(pe.ItemLabel,{children:Ki[C]})},N)})}),x&&(0,te.jsx)(pe.Group,{children:(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(wr.Icon,{icon:In}),onClick:()=>{a(t),E(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:_[0]}]})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Add filter")})})}),(s||v||R)&&y&&(0,te.jsxs)(pe.Group,{children:[s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(wr.Icon,{icon:Ks}),disabled:D?m>=f.length-1:m<1,onClick:()=>{let C=D?m+1:m-1,S=[...f];S.splice(m,1),S.splice(C,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Move left")})}),s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(wr.Icon,{icon:Xs}),disabled:D?m<1:m>=f.length-1,onClick:()=>{let C=D?m-1:m+1,S=[...f];S.splice(m,1),S.splice(C,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Move right")})}),l&&!!A.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Insert left")})}),(0,te.jsx)(pe.Popover,{children:A.map(C=>{let S=D?m+1:m;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...f.slice(0,S),C.id,...f.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:C.label})},C.id)})})]}),u&&!!A.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Insert right")})}),(0,te.jsx)(pe.Popover,{children:A.map(C=>{let S=D?m:m+1;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...f.slice(0,S),C.id,...f.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:C.label})},C.id)})})]}),v&&y&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(wr.Icon,{icon:Tn}),onClick:()=>{i(y),n({...r,fields:f.filter(C=>C!==t)})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,xr.__)("Hide column")})})]})]})})]})}),db=fb,qo=db;var Rf=c(W(),1),Ll=c(T(),1);function mb({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function Xr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,Ll.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,Rf.cloneElement)(l,{onClick:u=>{u.stopPropagation(),l.props.onClick&&l.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(u))}})}let s=mb({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,Ll.jsx)("div",{...s,...a,children:i})}var Jt=c(T(),1);function pb({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,Jt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Jt.jsx)(Xr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,Jt.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,Jt.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Jt.jsxs)(Xr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,Jt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,Jt.jsx)(r.render,{item:e,field:r})]}),n&&(0,Jt.jsx)(n.render,{item:e,field:n})]})]})}var ra=pb;var Nf=c(Rt(),1),Yo=c(W(),1),kf=c(Z(),1),vb=e=>(0,kf.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function Df({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Yo.useState)(!1),n=(0,Nf.useDebounce)((0,Yo.useCallback)(()=>{let i=e.current;i&&o(vb(i))},[e,o]),200);return(0,Yo.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function Lt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Qr=c(Y(),1),Ff=c(Z(),1),Lf=c(W(),1);var Nt=c(T(),1);function Mf({field:e,isVisible:t,onToggleVisibility:r}){return(0,Nt.jsx)(Qr.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,Nt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Nt.jsx)("div",{style:{height:24,width:24},children:t&&(0,Nt.jsx)(Qr.Icon,{icon:Pn})}),(0,Nt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function gb(e){return!!e}function oa({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,Lf.useContext)($),n=ta(t,r);if(!n?.length)return null;let i=r.find(v=>v.id===t.titleField),a=r.find(v=>v.id===t.mediaField),s=r.find(v=>v.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:v})=>gb(v)),u=t.fields??[],d=n.filter(v=>u.includes(v.id)).length,f=l.filter(({isVisibleFlag:v})=>t[v]??!0),m=f.length+d,p=m===1&&f.length===1;return(0,Nt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[e&&(0,Nt.jsx)(Qr.BaseControl.VisualLabel,{children:(0,Ff.__)("Properties")}),(0,Nt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Nt.jsxs)(Qr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:v,isVisibleFlag:b})=>{let x=t[b]??!0,_=p&&x?{...v,enableHiding:!1}:v;return(0,Nt.jsx)(Mf,{field:_,isVisible:x,onToggleVisibility:()=>{o({...t,[b]:!x})}},v.id)}),n.map(v=>{let b=u.includes(v.id),x=m===1&&b?{...v,enableHiding:!1}:v;return(0,Nt.jsx)(Mf,{field:x,isVisible:b,onToggleVisibility:()=>{o({...t,fields:b?u.filter(_=>_!==v.id):[...u,v.id]})}},v.id)})]})})]})}var X=c(T(),1);function hb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=U("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,X.jsx)("div",{className:i,children:(0,X.jsx)(n.render,{item:e,field:n})})}function Bf({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:u,selection:d,getItemId:f,isItemClickable:m,onClickItem:p,renderItemLink:v,onChangeSelection:b,isActionsColumnSticky:x,posinset:_}){let{paginationInfo:y}=(0,At.useContext)($),E=Ji(o,t),P=E&&d.includes(i),{showTitle:A=!0,showMedia:R=!0,showDescription:D=!0,infiniteScrollEnabled:C}=a,S=(0,At.useRef)(!1),N=a.fields??[],M=s&&A||l&&R||u&&D;return(0,X.jsxs)("tr",{className:U("dataviews-view-table__row",{"is-selected":E&&P,"has-bulk-actions":E}),onTouchStart:()=>{S.current=!0},"aria-setsize":C?y.totalItems:void 0,"aria-posinset":_,role:C?"article":void 0,onMouseDown:V=>{let g=(0,Bl.isAppleOS)()?V.metaKey:V.ctrlKey;V.button===0&&g&&window.navigator.userAgent.toLowerCase().includes("firefox")&&V?.preventDefault()},onClick:V=>{if(!E)return;((0,Bl.isAppleOS)()?V.metaKey:V.ctrlKey)&&!S.current&&document.getSelection()?.type!=="Range"&&b(d.includes(i)?d.filter(w=>i!==w):[...d,i])},children:[e&&(0,X.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,X.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,X.jsx)($r,{item:t,selection:d,onChangeSelection:b,getItemId:f,titleField:s,disabled:!E})})}),M&&(0,X.jsx)("td",{children:(0,X.jsx)(ra,{item:t,level:r,titleField:A?s:void 0,mediaField:R?l:void 0,descriptionField:D?u:void 0,isItemClickable:m,onClickItem:p,renderItemLink:v})}),N.map(V=>{let{width:g,maxWidth:w,minWidth:I,align:h}=a.layout?.styles?.[V]??{};return(0,X.jsx)("td",{style:{width:g,maxWidth:w,minWidth:I},children:(0,X.jsx)(hb,{fields:n,item:t,column:V,align:h})},V)}),!!o?.length&&(0,X.jsx)("td",{className:U("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":x}),onClick:V=>V.stopPropagation(),children:(0,X.jsx)(Wo,{item:t,actions:o})})]})}function bb({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:u,onClickItem:d,isItemClickable:f,renderItemLink:m,view:p,className:v,empty:b}){let{containerRef:x}=(0,At.useContext)($),_=(0,At.useRef)(new Map),y=(0,At.useRef)(),[E,P]=(0,At.useState)(),A=Go(e,t),[R,D]=(0,At.useState)(null);(0,At.useEffect)(()=>{y.current&&(y.current.focus(),y.current=void 0)});let C=(0,At.useId)(),S=Df({scrollContainerRef:x,enabled:!!e?.length});if(E){y.current=E,P(void 0);return}let N=q=>{let Ve=_.current.get(q.id),Qe=Ve?_.current.get(Ve.fallback):void 0;P(Qe?.node)},M=q=>{q.preventDefault(),q.stopPropagation();let Ve={getBoundingClientRect:()=>({x:q.clientX,y:q.clientY,top:q.clientY,left:q.clientX,right:q.clientX,bottom:q.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{D(Ve)})},V=!!t?.length,g=r.find(q=>q.id===p.titleField),w=r.find(q=>q.id===p.mediaField),I=r.find(q=>q.id===p.descriptionField),h=p.groupBy?.field?r.find(q=>q.id===p.groupBy?.field):null,k=h?Lt(t,h):null,{showTitle:j=!0,showMedia:O=!0,showDescription:G=!0}=p,K=g&&j||w&&O||I&&G,Xe=p.fields??[],rt=(q,Ve)=>Qe=>{Qe?_.current.set(q,{node:Qe,fallback:Xe[Ve>0?Ve-1:1]}):_.current.delete(q)},de=p.infiniteScrollEnabled&&!k,Pe=(0,xo.isRTL)();return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)("table",{className:U("dataviews-view-table",v,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":A}),"aria-busy":i,"aria-describedby":C,role:de?"feed":void 0,children:[(0,X.jsxs)("colgroup",{children:[A&&(0,X.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),K&&(0,X.jsx)("col",{className:"dataviews-view-table__col-first-data"}),Xe.map((q,Ve)=>(0,X.jsx)("col",{className:U(`dataviews-view-table__col-${q}`,{"dataviews-view-table__col-first-data":!K&&Ve===0})},`col-${q}`)),!!e?.length&&(0,X.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),R&&(0,X.jsx)(Nn.Popover,{anchor:R,onClose:()=>D(null),placement:"bottom-start",children:(0,X.jsx)(oa,{showLabel:!1})}),(0,X.jsx)("thead",{onContextMenu:M,children:(0,X.jsxs)("tr",{className:"dataviews-view-table__row",children:[A&&(0,X.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:M,children:(0,X.jsx)(Rn,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),K&&(0,X.jsx)("th",{scope:"col",children:g&&(0,X.jsx)(qo,{ref:rt(g.id,0),fieldId:g.id,view:p,fields:r,onChangeView:a,onHide:N,setOpenedFilter:u,canMove:!1,canInsertLeft:Pe?p.layout?.enableMoving??!0:!1,canInsertRight:Pe?!1:p.layout?.enableMoving??!0})}),Xe.map((q,Ve)=>{let{width:Qe,maxWidth:qt,minWidth:kr,align:Lo}=p.layout?.styles?.[q]??{},po=p.layout?.enableMoving??!0;return(0,X.jsx)("th",{style:{width:Qe,maxWidth:qt,minWidth:kr,textAlign:Lo},"aria-sort":p.sort?.direction&&p.sort?.field===q?$i[p.sort.direction]:void 0,scope:"col",children:(0,X.jsx)(qo,{ref:rt(q,Ve),fieldId:q,view:p,fields:r,onChangeView:a,onHide:N,setOpenedFilter:u,canMove:po,canInsertLeft:po,canInsertRight:po})},q)}),!!e?.length&&(0,X.jsx)("th",{className:U("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!S}),children:(0,X.jsx)("span",{className:"dataviews-view-table-header",children:(0,xo.__)("Actions")})})]})}),V&&h&&k?Array.from(k.entries()).map(([q,Ve])=>(0,X.jsxs)("tbody",{children:[(0,X.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,X.jsx)("td",{colSpan:Xe.length+(K?1:0)+(A?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?q:(0,xo.sprintf)((0,xo.__)("%1$s: %2$s"),h.label,q)})}),Ve.map((Qe,qt)=>(0,X.jsx)(Bf,{item:Qe,level:p.showLevels&&typeof n=="function"?n(Qe):void 0,hasBulkActions:A,actions:e,fields:r,id:o(Qe)||qt.toString(),view:p,titleField:g,mediaField:w,descriptionField:I,selection:l,getItemId:o,onChangeSelection:s,onClickItem:d,renderItemLink:m,isItemClickable:f,isActionsColumnSticky:!S},o(Qe)))]},`group-${q}`)):(0,X.jsx)("tbody",{children:V&&t.map((q,Ve)=>(0,X.jsx)(Bf,{item:q,level:p.showLevels&&typeof n=="function"?n(q):void 0,hasBulkActions:A,actions:e,fields:r,id:o(q)||Ve.toString(),view:p,titleField:g,mediaField:w,descriptionField:I,selection:l,getItemId:o,onChangeSelection:s,onClickItem:d,renderItemLink:m,isItemClickable:f,isActionsColumnSticky:!S,posinset:de?Ve+1:void 0},o(q)))})]}),(0,X.jsxs)("div",{className:U({"dataviews-loading":i,"dataviews-no-results":!V&&!i}),id:C,children:[!V&&(i?(0,X.jsx)("p",{children:(0,X.jsx)(Nn.Spinner,{})}):b),V&&i&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(Nn.Spinner,{})})]})]})}var jf=bb;var Hl=c(Y(),1),aa=c(Z(),1);var kt=c(Y(),1);var kn=c(Z(),1),Wf=c(Rt(),1),zf=c(Nl(),1),ia=c(W(),1);var xb=c(Y(),1),wb=c(Z(),1),na=c(W(),1);var yb=c(T(),1),_b=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],Sb=_b[2].value;function Hf(){let e=(0,na.useContext)($),t=e.view;return(0,na.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??Sb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ue=c(T(),1),{Badge:Cb}=J(kt.privateApis);function Eb(e,t){let r=[];for(let o=0,n=e.length;o{if(_.onClickCapture?.(h),(0,zf.isAppleOS)()?h.metaKey:h.ctrlKey){if(h.stopPropagation(),h.preventDefault(),!R)return;o(r.includes(D)?r.filter(k=>D!==k):[...r,D])}},children:[(0,ue.jsx)(Xr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:U("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!M}),...w,children:V}),b&&(0,ue.jsx)($r,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:f,disabled:!R}),!!u?.length&&(0,ue.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ue.jsx)(Wo,{item:l,actions:u,isCompact:!0})}),E&&(0,ue.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ue.jsx)(Xr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...I,title:f?.getValueFormatted({item:l,field:f})||void 0,children:g})}),(0,ue.jsxs)(F,{direction:"column",gap:"xs",children:[A&&m?.render&&(0,ue.jsx)(m.render,{item:l,field:m}),!!v?.length&&(0,ue.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(h=>(0,ue.jsx)(Cb,{className:"dataviews-view-grid__field-value",children:(0,ue.jsx)(h.render,{item:l,field:h})},h.id))}),!!p?.length&&(0,ue.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(h=>(0,ue.jsx)(kt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)(kt.Tooltip,{text:h.label,children:(0,ue.jsx)(kt.FlexItem,{className:"dataviews-view-grid__field-name",children:h.header})}),(0,ue.jsx)(kt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ue.jsx)(h.render,{item:l,field:h})})]})},h.id))})]})]})});function jl({data:e,isInfiniteScroll:t,className:r,isLoading:o,view:n,fields:i,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:d,getItemId:f,actions:m}){let{paginationInfo:p,resizeObserverRef:v}=(0,ia.useContext)($),b=Hf(),x=Go(m,e),_=i.find(S=>S.id===n?.titleField),y=i.find(S=>S.id===n?.mediaField),E=i.find(S=>S.id===n?.descriptionField),P=n.fields??[],{regularFields:A,badgeFields:R}=P.reduce((S,N)=>{let M=i.find(g=>g.id===N);if(!M)return S;let V=n.layout?.badgeFields?.includes(N)?"badgeFields":"regularFields";return S[V].push(M),S},{regularFields:[],badgeFields:[]}),D="900px",C=Math.ceil(e.length/b);return(0,ue.jsx)(kt.Composite,{role:t?"feed":"grid",className:U("dataviews-view-grid",r),focusWrap:!0,"aria-busy":o,"aria-rowcount":t?void 0:C,ref:v,children:Eb(e,b).map((S,N)=>(0,ue.jsx)(kt.Composite.Row,{render:(0,ue.jsx)("div",{role:"row","aria-rowindex":N+1,"aria-label":(0,kn.sprintf)((0,kn.__)("Row %d"),N+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${b}, minmax(0, 1fr) )`}}),children:S.map((M,V)=>{let g=N*b+V;return(0,ue.jsx)(kt.Composite.Item,{render:w=>(0,ue.jsx)(Ob,{...w,role:t?"article":"gridcell","aria-setsize":t?p.totalItems:void 0,"aria-posinset":t?g+1:void 0,view:n,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:d,getItemId:f,item:M,actions:m,mediaField:y,titleField:_,descriptionField:E,regularFields:A,badgeFields:R,hasBulkActions:x,config:{sizes:D}})},f(M))})},N))})}var xt=c(T(),1);function Pb({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:u,view:d,className:f,empty:m}){let p=!!t?.length,v=d.groupBy?.field?r.find(y=>y.id===d.groupBy?.field):null,b=v?Lt(t,v):null,x=d.infiniteScrollEnabled&&!b,_={className:f,isLoading:n,view:d,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,xt.jsxs)(xt.Fragment,{children:[p&&v&&b&&(0,xt.jsx)(F,{direction:"column",gap:"lg",children:Array.from(b.entries()).map(([y,E])=>(0,xt.jsxs)(F,{direction:"column",gap:"sm",children:[(0,xt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:d.groupBy?.showLabel===!1?y:(0,aa.sprintf)((0,aa.__)("%1$s: %2$s"),v.label,y)}),(0,xt.jsx)(jl,{..._,data:E,isInfiniteScroll:!1})]},y))}),p&&!b&&(0,xt.jsx)(jl,{..._,data:t,isInfiniteScroll:!!x}),!p&&(0,xt.jsx)("div",{className:U({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,xt.jsx)("p",{children:(0,xt.jsx)(Hl.Spinner,{})}):m}),p&&n&&(0,xt.jsx)("p",{className:"dataviews-loading-more",children:(0,xt.jsx)(Hl.Spinner,{})})]})}var Gf=Pb;var sa=c(Rt(),1),$e=c(Y(),1),Ge=c(W(),1),Dn=c(Z(),1);var ql=c(br(),1);var z=c(T(),1),{Menu:Wl}=J($e.privateApis);function zl(e){return`${e}-item-wrapper`}function Ab(e,t){return`${e}-primary-action-${t}`}function Gl(e){return`${e}-dropdown`}function Ib({idPrefix:e,primaryAction:t,item:r}){let o=(0,ql.useRegistry)(),[n,i]=(0,Ge.useState)(!1),a=Ab(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,z.jsx)("div",{role:"gridcell",children:(0,z.jsx)($e.Composite.Item,{id:a,render:(0,z.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,z.jsx)(bo,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,z.jsx)("div",{role:"gridcell",children:(0,z.jsx)($e.Composite.Item,{id:a,render:(0,z.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function qf({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:u,onDropdownTriggerKeyDown:d,posinset:f}){let{showTitle:m=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:b}=e,x=(0,Ge.useRef)(null),_=`${r}-label`,y=`${r}-description`,E=(0,ql.useRegistry)(),[P,A]=(0,Ge.useState)(!1),[R,D]=(0,Ge.useState)(null),C=({type:h})=>{A(h==="mouseenter")},{paginationInfo:S}=(0,Ge.useContext)($);(0,Ge.useEffect)(()=>{o&&x.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:N,eligibleActions:M}=(0,Ge.useMemo)(()=>{let h=t.filter(j=>!j.isEligible||j.isEligible(n));return{primaryAction:h.filter(j=>j.isPrimary)[0],eligibleActions:h}},[t,n]),V=N&&t.length===1,g=p&&a?.render?(0,z.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,z.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,w=m&&i?.render?(0,z.jsx)(i.render,{item:n,field:i}):null,I=M?.length>0&&(0,z.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[N&&(0,z.jsx)(Ib,{idPrefix:r,primaryAction:N,item:n}),!V&&(0,z.jsxs)("div",{role:"gridcell",children:[(0,z.jsxs)(Wl,{placement:"bottom-end",children:[(0,z.jsx)(Wl.TriggerButton,{render:(0,z.jsx)($e.Composite.Item,{id:Gl(r),render:(0,z.jsx)($e.Button,{size:"small",icon:Vn,label:(0,Dn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:d})})}),(0,z.jsx)(Wl.Popover,{children:(0,z.jsx)(Dl,{actions:M,item:n,registry:E,setActiveModalAction:D})})]}),!!R&&(0,z.jsx)(bo,{action:R,items:[n],closeModal:()=>D(null)})]})]});return(0,z.jsx)($e.Composite.Row,{ref:x,render:(0,z.jsx)("div",{"aria-posinset":f,"aria-setsize":b?S.totalItems:void 0}),role:b?"article":"row",className:U({"is-selected":o,"is-hovered":P}),onMouseEnter:C,onMouseLeave:C,children:(0,z.jsxs)(F,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,z.jsx)("div",{role:"gridcell",children:(0,z.jsx)($e.Composite.Item,{id:zl(r),"aria-pressed":o,"aria-labelledby":_,"aria-describedby":y,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,z.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[g,(0,z.jsxs)(F,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,z.jsxs)(F,{direction:"row",align:"center",children:[(0,z.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:_,children:w}),I]}),v&&s?.render&&(0,z.jsx)("div",{className:"dataviews-view-list__field",children:(0,z.jsx)(s.render,{item:n,field:s})}),(0,z.jsx)("div",{className:"dataviews-view-list__fields",id:y,children:u.map(h=>(0,z.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,z.jsx)($e.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:h.label}),(0,z.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,z.jsx)(h.render,{item:n,field:h})})]},h.id))})]})]})]})})}function Vb(e){return!!e}function Yl(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:u,empty:d}=e,f=(0,sa.useInstanceId)(Yl,"view-list"),m=r?.findLast(w=>s.includes(n(w))),p=o.find(w=>w.id===l.titleField),v=o.find(w=>w.id===l.mediaField),b=o.find(w=>w.id===l.descriptionField),x=(l?.fields??[]).map(w=>o.find(I=>w===I.id)).filter(Vb),_=w=>a([n(w)]),y=(0,Ge.useCallback)(w=>`${f}-${n(w)}`,[f,n]),E=(0,Ge.useCallback)((w,I)=>I.startsWith(y(w)),[y]),[P,A]=(0,Ge.useState)(void 0);(0,Ge.useEffect)(()=>{m&&A(zl(y(m)))},[m,y]);let R=r.findIndex(w=>E(w,P??"")),D=(0,sa.usePrevious)(R),C=R!==-1,S=(0,Ge.useCallback)((w,I)=>{let h=Math.min(r.length-1,Math.max(0,w));if(!r[h])return;let k=y(r[h]),j=I(k);A(j),document.getElementById(j)?.focus()},[r,y]);(0,Ge.useEffect)(()=>{!C&&(D!==void 0&&D!==-1)&&S(D,zl)},[C,S,D]);let N=(0,Ge.useCallback)(w=>{w.key==="ArrowDown"&&(w.preventDefault(),S(R+1,Gl)),w.key==="ArrowUp"&&(w.preventDefault(),S(R-1,Gl))},[S,R]),M=r?.length;if(!M)return(0,z.jsx)("div",{className:U({"dataviews-loading":i,"dataviews-no-results":!M&&!i}),children:!M&&(i?(0,z.jsx)("p",{children:(0,z.jsx)($e.Spinner,{})}):d)});let V=l.groupBy?.field?o.find(w=>w.id===l.groupBy?.field):null,g=V?Lt(r,V):null;return M&&V&&g?(0,z.jsx)($e.Composite,{id:`${f}`,render:(0,z.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:P,setActiveId:A,children:(0,z.jsx)(F,{direction:"column",gap:"lg",className:U("dataviews-view-list",u),children:Array.from(g.entries()).map(([w,I])=>(0,z.jsxs)(F,{direction:"column",gap:"sm",children:[(0,z.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?w:(0,Dn.sprintf)((0,Dn.__)("%1$s: %2$s"),V.label,w)}),I.map(h=>{let k=y(h);return(0,z.jsx)(qf,{view:l,idPrefix:k,actions:t,item:h,isSelected:h===m,onSelect:_,mediaField:v,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:N},k)})]},w))})}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)($e.Composite,{id:f,render:(0,z.jsx)("div",{}),className:U("dataviews-view-list",u,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density)}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:P,setActiveId:A,children:r.map((w,I)=>{let h=y(w);return(0,z.jsx)(qf,{view:l,idPrefix:h,actions:t,item:w,isSelected:w===m,onSelect:_,mediaField:v,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:N,posinset:l.infiniteScrollEnabled?I+1:void 0},h)})}),M&&i&&(0,z.jsx)("p",{className:"dataviews-loading-more",children:(0,z.jsx)($e.Spinner,{})})]})}var $l=c(Y(),1);var la=c(Z(),1),Yf=c(W(),1);var Uo=c(T(),1);function Uf({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Yf.createInterpolateElement)((0,la.sprintf)((0,la.__)("%s: "),r.label).trim(),{groupName:(0,Uo.jsx)(r.render,{item:t[0],field:r})}):(0,Uo.jsx)(r.render,{item:t[0],field:r});return(0,Uo.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,Uo.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var $f=c(Y(),1),wo=c(W(),1),Kf=c(br(),1),Zf=c(Rt(),1);var je=c(T(),1);function Tb(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:u,renderItemLink:d,isItemClickable:f}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:b}=t,x=(0,wo.useRef)(null),_=(0,Kf.useRegistry)(),{paginationInfo:y}=(0,wo.useContext)($),{primaryActions:E,eligibleActions:P}=(0,wo.useMemo)(()=>{let M=r.filter(g=>!g.isEligible||g.isEligible(o));return{primaryActions:M.filter(g=>g.isPrimary),eligibleActions:M}},[r,o]),A=(0,Zf.useViewportMatch)("medium","<"),R=t.layout?.density??"balanced",D=p&&R!=="compact"&&i?.render?(0,je.jsx)(i.render,{item:o,field:i,config:{sizes:R==="comfortable"?"32px":"24px"}}):null,C=(0,je.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,je.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),S=m&&n?.render?(0,je.jsx)(n.render,{item:o,field:n}):null,N=(0,wo.useMemo)(()=>R==="comfortable"?"md":"sm",[R]);return(0,je.jsx)("div",{ref:x,role:b?"article":void 0,"aria-posinset":l,"aria-setsize":b?y.totalItems:void 0,className:U("dataviews-view-activity__item",R==="compact"&&"is-compact",R==="balanced"&&"is-balanced",R==="comfortable"&&"is-comfortable"),children:(0,je.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,je.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:C}),(0,je.jsxs)(F,{direction:"column",gap:N,align:"flex-start",className:"dataviews-view-activity__item-content",children:[S&&(0,je.jsx)(Xr,{item:o,isItemClickable:f,onClickItem:u,renderItemLink:d,className:"dataviews-view-activity__item-title",children:S}),v&&a&&(0,je.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,je.jsx)(a.render,{item:o,field:a})}),(0,je.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(M=>(0,je.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,je.jsx)($f.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:M.label}),(0,je.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,je.jsx)(M.render,{item:o,field:M})})]},M.id))}),!!E?.length&&(0,je.jsx)(Ml,{item:o,actions:E,registry:_,buttonVariant:"secondary"})]}),(E.length0)&&(0,je.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,je.jsx)(Wo,{item:o,actions:P,isCompact:!0})})]})})}var Xf=Tb;var Qf=c(me(),1);function Rb(e){return!!e}function Ul(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),s=r.find(u=>u.id===n.descriptionField),l=(n?.fields??[]).map(u=>r.find(d=>u===d.id)).filter(Rb);return t.map((u,d)=>(0,Qf.createElement)(Xf,{...e,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?d+1:void 0}))}var wt=c(T(),1);function Jf(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=r?.length;if(!s)return(0,wt.jsx)("div",{className:U({"dataviews-loading":n,"dataviews-no-results":!s&&!n}),children:!s&&(n?(0,wt.jsx)("p",{children:(0,wt.jsx)($l.Spinner,{})}):t)});let l=U("dataviews-view-activity",a),u=i.groupBy?.field?o.find(m=>m.id===i.groupBy?.field):null,d=u?Lt(r,u):null,f=d?Array.from(d.entries()):[];return s&&u&&d?(0,wt.jsx)(F,{direction:"column",gap:"sm",className:l,children:f.map(([m,p])=>(0,wt.jsx)(Uf,{groupName:m,groupData:p,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,wt.jsx)(Ul,{...e,data:p})},m))}):(0,wt.jsxs)(wt.Fragment,{children:[(0,wt.jsx)("div",{className:l,role:i.infiniteScrollEnabled?"feed":void 0,children:(0,wt.jsx)(Ul,{...e})}),s&&n&&(0,wt.jsx)("p",{className:"dataviews-loading-more",children:(0,wt.jsx)($l.Spinner,{})})]})}var It=c(Y(),1),Fn=c(Z(),1),ad=c(Rt(),1),sd=c(W(),1);var td=c(Y(),1),Nb=c(br(),1),ua=c(W(),1);var kb=c(Z(),1);var Mn=c(Y(),1),$o=c(W(),1),Dt=c(Z(),1);var yr=c(T(),1);function Kl(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,$o.useContext)($);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Dt.sprintf)((0,Dt.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,yr.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,yr.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,$o.createInterpolateElement)((0,Dt.sprintf)((0,Dt._x)("
      Page
      %1$s
      of %2$d
      ","paging"),"",o),{div:(0,yr.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,yr.jsx)(Mn.SelectControl,{"aria-label":(0,Dt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,yr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,yr.jsx)(Mn.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Dt.__)("Previous page"),icon:(0,Dt.isRTL)()?Bi:Wi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,yr.jsx)(Mn.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Dt.__)("Next page"),icon:(0,Dt.isRTL)()?Wi:Bi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var ed=(0,$o.memo)(Kl);var rd=c(T(),1);function ca(e){return(0,ua.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var od=c(W(),1);var nd=c(T(),1),Zl=(0,od.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,nd.jsx)("div",{ref:o,className:U("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var ee=c(T(),1),{Badge:Db}=J(It.privateApis);function id({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:u,badgeFields:d,config:f,posinset:m,setsize:p}){let{showTitle:v=!0,showMedia:b=!0,showDescription:x=!0}=e,_=n(i),y=r.includes(_),E=a?.render?(0,ee.jsx)(a.render,{item:i,field:a,config:f}):null,P=v&&s?.render?(0,ee.jsx)(s.render,{item:i,field:s}):null;return(0,ee.jsxs)(It.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,Fn.__)("(no title)"):void 0,render:({children:A,...R})=>(0,ee.jsx)(F,{direction:"column",children:A,...R}),role:"option","aria-posinset":m,"aria-setsize":p,className:U("dataviews-view-picker-grid__card",{"is-selected":y}),"aria-selected":y,onClick:()=>{if(y)o(r.filter(A=>_!==A));else{let A=t?[...r,_]:[_];o(A)}},children:[b&&E&&(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__media",children:E}),b&&E&&(0,ee.jsx)($r,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,ee.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:P})}),(0,ee.jsxs)(F,{direction:"column",gap:"xs",children:[x&&l?.render&&(0,ee.jsx)(l.render,{item:i,field:l}),!!d?.length&&(0,ee.jsx)(F,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:d.map(A=>(0,ee.jsx)(Db,{className:"dataviews-view-picker-grid__field-value",children:(0,ee.jsx)(A.render,{item:i,field:A})},A.id))}),!!u?.length&&(0,ee.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(A=>(0,ee.jsx)(It.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(It.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:A.header}),(0,ee.jsx)(It.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,ee.jsx)(A.render,{item:i,field:A})})]})},A.id))})]})]},_)}function ld({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,ad.useInstanceId)(ld,"dataviews-view-picker-grid-group__header");return(0,ee.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,ee.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Fn.sprintf)((0,Fn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function Mb({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:u}){let{resizeObserverRef:d,paginationInfo:f,itemListLabel:m}=(0,sd.useContext)($),p=r.find(g=>g.id===s?.titleField),v=r.find(g=>g.id===s?.mediaField),b=r.find(g=>g.id===s?.descriptionField),x=s.fields??[],{regularFields:_,badgeFields:y}=x.reduce((g,w)=>{let I=r.find(k=>k.id===w);if(!I)return g;let h=s.layout?.badgeFields?.includes(w)?"badgeFields":"regularFields";return g[h].push(I),g},{regularFields:[],badgeFields:[]}),E=!!t?.length,P=s.layout?.previewSize,A=ca(e),R="900px",D=s.groupBy?.field?r.find(g=>g.id===s.groupBy?.field):null,C=D?Lt(t,D):null,S=s.infiniteScrollEnabled&&!C,N=s?.page??1,M=s?.perPage??0,V=S?f?.totalItems:void 0;return(0,ee.jsxs)(ee.Fragment,{children:[E&&D&&C&&(0,ee.jsx)(It.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,className:U("dataviews-view-picker-grid",l),"aria-label":m,render:({children:g,...w})=>(0,ee.jsx)(F,{direction:"column",gap:"lg",children:g,...w}),children:Array.from(C.entries()).map(([g,w])=>(0,ee.jsx)(ld,{groupName:g,groupField:D,showLabel:s.groupBy?.showLabel!==!1,children:(0,ee.jsx)(Zl,{previewSize:P,style:{gridTemplateColumns:P&&`repeat(auto-fill, minmax(${P}px, 1fr))`},"aria-busy":n,ref:d,children:w.map(I=>{let h=(N-1)*M+t.indexOf(I)+1;return(0,ee.jsx)(id,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:I,mediaField:v,titleField:p,descriptionField:b,regularFields:_,badgeFields:y,config:{sizes:R},posinset:h,setsize:V},o(I))})})},g))}),E&&!C&&(0,ee.jsx)(It.Composite,{render:(0,ee.jsx)(Zl,{className:U("dataviews-view-picker-grid",l),previewSize:P,"aria-busy":n,ref:d}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,"aria-label":m,children:t.map((g,w)=>{let I=S?w+1:void 0;return S||(I=(N-1)*M+w+1),(0,ee.jsx)(id,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:g,mediaField:v,titleField:p,descriptionField:b,regularFields:_,badgeFields:y,config:{sizes:R},posinset:I,setsize:V},o(g))})}),!E&&(0,ee.jsx)("div",{className:U({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,ee.jsx)("p",{children:(0,ee.jsx)(It.Spinner,{})}):u}),E&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(It.Spinner,{})})]})}var ud=Mb;var fa=c(Z(),1),yo=c(Y(),1),Bt=c(W(),1);var re=c(T(),1);function Fb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=U("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,re.jsx)("div",{className:i,children:(0,re.jsx)(n.render,{item:e,field:n})})}function cd({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:u,multiselect:d,posinset:f}){let{paginationInfo:m}=(0,Bt.useContext)($),p=s.includes(r),[v,b]=(0,Bt.useState)(!1),{showTitle:x=!0,showMedia:_=!0,showDescription:y=!0,infiniteScrollEnabled:E}=o,P=()=>{b(!0)},A=()=>{b(!1)},R=o.fields??[],D=n&&x||i&&_||a&&y;return(0,re.jsxs)(yo.Composite.Item,{render:({children:C,...S})=>(0,re.jsx)("tr",{className:U("dataviews-view-table__row",{"is-selected":p,"is-hovered":v}),onMouseEnter:P,onMouseLeave:A,children:C,...S}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":f,role:E?"article":"option",onClick:()=>{if(p)u(s.filter(C=>r!==C));else{let C=d?[...s,r]:[r];u(C)}},children:[(0,re.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,re.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,re.jsx)($r,{item:e,selection:s,onChangeSelection:u,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,re.jsx)("td",{role:"presentation",children:(0,re.jsx)(ra,{item:e,titleField:x?n:void 0,mediaField:_?i:void 0,descriptionField:y?a:void 0,isItemClickable:()=>!1})}),R.map(C=>{let{width:S,maxWidth:N,minWidth:M,align:V}=o.layout?.styles?.[C]??{};return(0,re.jsx)("td",{style:{width:S,maxWidth:N,minWidth:M},role:"presentation",children:(0,re.jsx)(Fb,{fields:t,item:e,column:C,align:V})},C)})]},r)}function Lb({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:u,className:d,empty:f}){let m=(0,Bt.useRef)(new Map),p=(0,Bt.useRef)(),[v,b]=(0,Bt.useState)(),x=ca(e)??!1;(0,Bt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let _=(0,Bt.useId)();if(v){p.current=v,b(void 0);return}let y=h=>{let k=m.current.get(h.id),j=k?m.current.get(k.fallback):void 0;b(j?.node)},E=!!t?.length,P=r.find(h=>h.id===u.titleField),A=r.find(h=>h.id===u.mediaField),R=r.find(h=>h.id===u.descriptionField),D=u.groupBy?.field?r.find(h=>h.id===u.groupBy?.field):null,C=D?Lt(t,D):null,{showTitle:S=!0,showMedia:N=!0,showDescription:M=!0}=u,V=P&&S||A&&N||R&&M,g=u.fields??[],w=(h,k)=>j=>{j?m.current.set(h,{node:j,fallback:g[k>0?k-1:1]}):m.current.delete(h)},I=u.infiniteScrollEnabled&&!C;return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsxs)("table",{className:U("dataviews-view-table","dataviews-view-picker-table",d,{[`has-${u.layout?.density}-density`]:u.layout?.density&&["compact","comfortable"].includes(u.layout.density)}),"aria-busy":n,"aria-describedby":_,role:I?"feed":"listbox",children:[(0,re.jsx)("thead",{role:"presentation",children:(0,re.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,re.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:x&&(0,re.jsx)(Rn,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),V&&(0,re.jsx)("th",{children:P&&(0,re.jsx)(qo,{ref:w(P.id,0),fieldId:P.id,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:!1})}),g.map((h,k)=>{let{width:j,maxWidth:O,minWidth:G,align:K}=u.layout?.styles?.[h]??{};return(0,re.jsx)("th",{style:{width:j,maxWidth:O,minWidth:G,textAlign:K},"aria-sort":u.sort?.direction&&u.sort?.field===h?$i[u.sort.direction]:void 0,scope:"col",children:(0,re.jsx)(qo,{ref:w(h,k),fieldId:h,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:u.layout?.enableMoving??!0})},h)})]})}),E&&D&&C?Array.from(C.entries()).map(([h,k])=>(0,re.jsxs)(yo.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,re.jsx)("tbody",{role:"group"}),children:[(0,re.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,re.jsx)("td",{colSpan:g.length+(V?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?h:(0,fa.sprintf)((0,fa.__)("%1$s: %2$s"),D.label,h)})}),k.map((j,O)=>(0,re.jsx)(cd,{item:j,fields:r,id:o(j)||O.toString(),view:u,titleField:P,mediaField:A,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:x},o(j)))]},`group-${h}`)):(0,re.jsx)(yo.Composite,{render:(0,re.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:E&&t.map((h,k)=>(0,re.jsx)(cd,{item:h,fields:r,id:o(h)||k.toString(),view:u,titleField:P,mediaField:A,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:x,posinset:k+1},o(h)))})]}),(0,re.jsxs)("div",{className:U({"dataviews-loading":n,"dataviews-no-results":!E&&!n}),id:_,children:[!E&&(n?(0,re.jsx)("p",{children:(0,re.jsx)(yo.Spinner,{})}):f),E&&n&&(0,re.jsx)("p",{className:"dataviews-loading-more",children:(0,re.jsx)(yo.Spinner,{})})]})]})}var fd=Lb;var dd=c(Y(),1),md=c(Z(),1),pd=c(W(),1);var vd=c(T(),1),Bb=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function Xl(){let e=(0,pd.useContext)($),t=e.view,r=Bb.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,vd.jsx)(dd.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,md.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var Ko=c(Y(),1),Zo=c(Z(),1),gd=c(W(),1);var Xo=c(T(),1);function Ln(){let e=(0,gd.useContext)($),t=e.view;return(0,Xo.jsxs)(Ko.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Zo.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,Xo.jsx)(Ko.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,Zo._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Xo.jsx)(Ko.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,Zo._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Xo.jsx)(Ko.__experimentalToggleGroupControlOption,{value:"compact",label:(0,Zo._x)("Compact","Density option for DataView layout")},"compact")]})}var Jr=[{type:jo,label:(0,_r.__)("Table"),component:jf,icon:Ci,viewConfigOptions:Ln},{type:Zi,label:(0,_r.__)("Grid"),component:Gf,icon:Oi,viewConfigOptions:Xl},{type:pf,label:(0,_r.__)("List"),component:Yl,icon:(0,_r.isRTL)()?fl:ml,viewConfigOptions:Ln},{type:vf,label:(0,_r.__)("Activity"),component:Jf,icon:El,viewConfigOptions:Ln},{type:gf,label:(0,_r.__)("Grid"),component:ud,icon:Oi,viewConfigOptions:Xl,isPicker:!0},{type:hf,label:(0,_r.__)("Table"),component:fd,icon:Ci,viewConfigOptions:Ln,isPicker:!0}];var mn=c(W(),1);var Yt=c(Y(),1),Vr=c(Z(),1),Ua=c(W(),1);var jb=Object.defineProperty,Hb=Object.defineProperties,Wb=Object.getOwnPropertyDescriptors,da=Object.getOwnPropertySymbols,bd=Object.prototype.hasOwnProperty,xd=Object.prototype.propertyIsEnumerable,hd=(e,t,r)=>t in e?jb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,B=(e,t)=>{for(var r in t||(t={}))bd.call(t,r)&&hd(e,r,t[r]);if(da)for(var r of da(t))xd.call(t,r)&&hd(e,r,t[r]);return e},Q=(e,t)=>Hb(e,Wb(t)),ae=(e,t)=>{var r={};for(var o in e)bd.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&da)for(var o of da(e))t.indexOf(o)<0&&xd.call(e,o)&&(r[o]=e[o]);return r};var zb=Object.defineProperty,Gb=Object.defineProperties,qb=Object.getOwnPropertyDescriptors,ma=Object.getOwnPropertySymbols,yd=Object.prototype.hasOwnProperty,_d=Object.prototype.propertyIsEnumerable,wd=(e,t,r)=>t in e?zb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,se=(e,t)=>{for(var r in t||(t={}))yd.call(t,r)&&wd(e,r,t[r]);if(ma)for(var r of ma(t))_d.call(t,r)&&wd(e,r,t[r]);return e},He=(e,t)=>Gb(e,qb(t)),pa=(e,t)=>{var r={};for(var o in e)yd.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ma)for(var o of ma(e))t.indexOf(o)<0&&_d.call(e,o)&&(r[o]=e[o]);return r};function Bn(...e){}function Ql(e,t){if(Yb(e)){let r=Ub(t)?t():t;return e(r)}return e}function Yb(e){return typeof e=="function"}function Ub(e){return typeof e=="function"}function Vt(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function eo(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function jn(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function Jl(e,t){let r=se({},e);for(let o of t)Vt(r,o)&&delete r[o];return r}function eu(e,t){let r={};for(let o of t)Vt(e,o)&&(r[o]=e[o]);return r}function Hn(e){return e}function ot(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function tu(e){return Object.keys(e)}function ru(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function _o(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function nt(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function oe(...e){for(let t of e)if(t!==void 0)return t}var Sd=c(me(),1);function Cd(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function $b(e){return!e||!(0,Sd.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function Ed(e){return $b(e)?B({},e.props).ref||e.ref:null}function Od(e,t){let r=B({},e);for(let o in t){if(!Vt(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?B(B({},e[i]),t[i]):t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var to=Kb();function Kb(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function Sr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function So(e,t=!1){let{activeElement:r}=Sr(e);if(!r?.nodeName)return null;if(ou(r)&&r.contentDocument)return So(r.contentDocument.body,t);if(t){let o=r.getAttribute("aria-activedescendant");if(o){let n=Sr(r).getElementById(o);if(n)return n}}return r}function er(e,t){return e===t||e.contains(t)}function ou(e){return e.tagName==="IFRAME"}function Cr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?Zb.indexOf(e.type)!==-1:!1}var Zb=["button","color","file","image","reset","submit"];function nu(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function yt(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function Wn(e){return e.isContentEditable||yt(e)}function iu(e){if(yt(e))return e.value;if(e.isContentEditable){let t=Sr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function Qo(e){let t=0,r=0;if(yt(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=Sr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&er(e,o.anchorNode)&&o.focusNode&&er(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function au(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function Jo(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return Jo(e.parentElement)||document.scrollingElement||document.body}function zn(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function su(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),u=t(s);return l===u||!l||!u?0:Xb(l,u)?(n>a&&(o=!0),-1):(ni):e}function Xb(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function lu(){return to&&!!navigator.maxTouchPoints}function va(){return to?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Co(){return to&&va()&&/apple/i.test(navigator.vendor)}function uu(){return to&&/firefox\//i.test(navigator.userAgent)}function ga(e){return!!(e.currentTarget&&!er(e.currentTarget,e.target))}function mt(e){return e.target===e.currentTarget}function Pd(e){let t=e.currentTarget;if(!t)return!1;let r=va();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function Ad(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function Eo(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n=He(se({},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",n)),o}function Id(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function cu(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function ha(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!er(r,o)}function ro(e,t,r,o){let i=(s=>{if(o){let u=setTimeout(s,o);return()=>clearTimeout(u)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function tr(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(tr(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var be=c(me(),1),Qb=c(me(),1),fu=B({},Qb),Vd=fu.useId,d2=fu.useDeferredValue,Td=fu.useInsertionEffect,Ne=to?be.useLayoutEffect:be.useEffect;function Jb(e){let[t]=(0,be.useState)(e);return t}function kd(e){let t=(0,be.useRef)(e);return Ne(()=>{t.current=e}),t}function ne(e){let t=(0,be.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return Td?Td(()=>{t.current=e}):t.current=e,(0,be.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function Dd(e){let[t,r]=(0,be.useState)(null);return Ne(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function ke(...e){return(0,be.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)Cd(r,t)}},e)}function jt(e){if(Vd){let o=Vd();return e||o}let[t,r]=(0,be.useState)(e);return Ne(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function Md(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,be.useState)(()=>r(t));return Ne(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function Fd(e,t,r){let o=Jb(r),[n,i]=(0,be.useState)(o);return(0,be.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let u=a.getAttribute(t);i(u??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function rr(e,t){let r=(0,be.useRef)(!1);(0,be.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,be.useEffect)(()=>()=>{r.current=!1},[])}function Ld(e,t){let r=(0,be.useRef)(!1);Ne(()=>{if(r.current)return e();r.current=!0},t),Ne(()=>()=>{r.current=!1},[])}function Bd(){return(0,be.useReducer)(()=>[],[])}function We(e){return ne(typeof e=="function"?e:()=>e)}function or(e,t,r=[]){let o=(0,be.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return Q(B({},e),{wrapElement:o})}function jd(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,be.useMemo)(()=>Object.assign(()=>{},Q(B({},o),{[t]:r})),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}function Hd(){return(0,be.useEffect)(()=>{tr("mousemove",tx,!0),tr("mousedown",ba,!0),tr("mouseup",ba,!0),tr("keydown",ba,!0),tr("scroll",ba,!0)},[]),ne(()=>du)}var du=!1,Rd=0,Nd=0;function ex(e){let t=e.movementX||e.screenX-Rd,r=e.movementY||e.screenY-Nd;return Rd=e.screenX,Nd=e.screenY,t||r||!1}function tx(e){ex(e)&&(du=!0)}function ba(){du=!1}var _t=c(me(),1),Oo=c(T(),1);function xe(e){let t=_t.forwardRef((r,o)=>e(Q(B({},r),{ref:o})));return t.displayName=e.displayName||e.name,t}function oo(e,t){return _t.memo(e,t)}function _e(e,t){let r=t,{wrapElement:o,render:n}=r,i=ae(r,["wrapElement","render"]),a=ke(t.ref,Ed(n)),s;if(_t.isValidElement(n)){let l=Q(B({},n.props),{ref:a});s=_t.cloneElement(n,Od(i,l))}else n?s=n(i):s=(0,Oo.jsx)(e,B({},i));return o?o(s):s}function Se(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function Tt(e=[],t=[]){let r=_t.createContext(void 0),o=_t.createContext(void 0),n=()=>_t.useContext(r),i=(u=!1)=>{let d=_t.useContext(o),f=n();return u?d:d||f},a=()=>{let u=_t.useContext(o),d=n();if(!(u&&u===d))return d},s=u=>e.reduceRight((d,f)=>(0,Oo.jsx)(f,Q(B({},u),{children:d})),(0,Oo.jsx)(r.Provider,B({},u)));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:u=>(0,Oo.jsx)(s,Q(B({},u),{children:t.reduceRight((d,f)=>(0,Oo.jsx)(f,Q(B({},u),{children:d})),(0,Oo.jsx)(o.Provider,B({},u)))}))}}var Gn=Tt(),Wd=Gn.useContext,x2=Gn.useScopedContext,w2=Gn.useProviderContext,zd=Gn.ContextProvider,Gd=Gn.ScopedContextProvider;var mu=c(me(),1),qn=Tt([zd],[Gd]),xa=qn.useContext,C2=qn.useScopedContext,qd=qn.useProviderContext,en=qn.ContextProvider,wa=qn.ScopedContextProvider,Yd=(0,mu.createContext)(void 0),Ud=(0,mu.createContext)(void 0);var pu=c(me(),1),A2=(0,pu.createContext)(null),I2=(0,pu.createContext)(null),Yn=Tt([en],[wa]),$d=Yn.useContext,V2=Yn.useScopedContext,T2=Yn.useProviderContext,R2=Yn.ContextProvider,N2=Yn.ScopedContextProvider;function Po(e,t){let r=e.__unstableInternals;return ot(r,"Invalid store"),r[t]}function St(e,...t){let r=e,o=r,n=Symbol(),i=Bn,a=new Set,s=new Set,l=new Set,u=new Set,d=new Set,f=new WeakMap,m=new WeakMap,p=C=>(l.add(C),()=>l.delete(C)),v=()=>{let C=a.size,S=Symbol();a.add(S);let N=()=>{a.delete(S),!a.size&&i()};if(C)return N;let M=tu(r).map(w=>eo(...t.map(I=>{var h;let k=(h=I?.getState)==null?void 0:h.call(I);if(k&&Vt(k,w))return et(I,[w],j=>{R(w,j[w],!0)})}))),V=[];for(let w of l)V.push(w());let g=t.map(tn);return i=eo(...M,...V,...g),N},b=(C,S,N=u)=>(N.add(S),m.set(S,C),()=>{var M;(M=f.get(S))==null||M(),f.delete(S),m.delete(S),N.delete(S)}),x=(C,S)=>b(C,S),_=(C,S)=>(f.set(S,S(r,r)),b(C,S)),y=(C,S)=>(f.set(S,S(r,o)),b(C,S,d)),E=C=>St(eu(r,C),D),P=C=>St(Jl(r,C),D),A=()=>r,R=(C,S,N=!1)=>{var M;if(!Vt(r,C))return;let V=Ql(S,r[C]);if(V===r[C])return;if(!N)for(let h of t)(M=h?.setState)==null||M.call(h,C,V);let g=r;r=He(se({},r),{[C]:V});let w=Symbol();n=w,s.add(C);let I=(h,k,j)=>{var O;let G=m.get(h),K=Xe=>j?j.has(Xe):Xe===C;(!G||G.some(K))&&((O=f.get(h))==null||O(),f.set(h,h(r,k)))};for(let h of u)I(h,g);queueMicrotask(()=>{if(n!==w)return;let h=r;for(let k of d)I(k,o,s);o=h,s.clear()})},D={getState:A,setState:R,__unstableInternals:{setup:p,init:v,subscribe:x,sync:_,batch:y,pick:E,omit:P}};return D}function Je(e,...t){if(e)return Po(e,"setup")(...t)}function tn(e,...t){if(e)return Po(e,"init")(...t)}function rn(e,...t){if(e)return Po(e,"subscribe")(...t)}function et(e,...t){if(e)return Po(e,"sync")(...t)}function no(e,...t){if(e)return Po(e,"batch")(...t)}function Un(e,...t){if(e)return Po(e,"omit")(...t)}function vu(e,...t){if(e)return Po(e,"pick")(...t)}function Ao(...e){let t=e.reduce((o,n)=>{var i;let a=(i=n?.getState)==null?void 0:i.call(n);return a?Object.assign(o,a):o},{}),r=St(t,...e);return Object.assign({},...e,r)}var nr=c(me(),1),Kd=c(sf(),1),{useSyncExternalStore:Zd}=Kd.default,Xd=()=>()=>{};function on(e,t=Hn){let r=nr.useCallback(n=>e?rn(e,null,n):Xd(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&Vt(a,n))return a[n]};return Zd(r,o,o)}function _a(e,t){let r=nr.useRef({}),o=nr.useCallback(i=>e?rn(e,null,i):Xd(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let u=t[l];if(typeof u=="function"){let d=u(i);d!==s[l]&&(s[l]=d,a=!0)}if(typeof u=="string"){if(!i||!Vt(i,u))continue;let d=i[u];d!==s[l]&&(s[l]=d,a=!0)}}return a&&(r.current=B({},s)),r.current};return Zd(o,n,n)}function De(e,t,r,o){let n=Vt(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=kd({value:n,setValue:i});Ne(()=>et(e,[r],(s,l)=>{let{value:u,setValue:d}=a.current;d&&s[r]!==l[r]&&s[r]!==u&&d(s[r])}),[e,r]),Ne(()=>{if(n!==void 0)return e.setState(r,n),no(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function nn(e,t){let[r,o]=nr.useState(()=>e(t));Ne(()=>tn(r),[r]);let n=nr.useCallback(s=>on(r,s),[r]),i=nr.useMemo(()=>Q(B({},r),{useState:n}),[r,n]),a=ne(()=>{o(s=>e(B(B({},t),s.getState())))});return[i,a]}function rx(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Sr(n).body}function ox(e){return e?.__unstablePrivateStore}function Qd(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=oe(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:oe(r?.renderedItems,[])},a=ox(e.store),s=St({items:o,renderedItems:i.renderedItems},a),l=St(i,e.store),u=m=>{let p=su(m,v=>v.element);s.setState("renderedItems",p),l.setState("renderedItems",p)};Je(l,()=>tn(s)),Je(s,()=>no(s,["items"],m=>{l.setState("items",m.items)})),Je(s,()=>no(s,["renderedItems"],m=>{let p=!0,v=requestAnimationFrame(()=>{let{renderedItems:y}=l.getState();m.renderedItems!==y&&u(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let b=()=>{if(p){p=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>u(m.renderedItems))},x=rx(m.renderedItems),_=new IntersectionObserver(b,{root:x});for(let y of m.renderedItems)y.element&&_.observe(y.element);return()=>{cancelAnimationFrame(v),_.disconnect()}}));let d=(m,p,v=!1)=>{let b;return p(_=>{let y=_.findIndex(({id:P})=>P===m.id),E=_.slice();if(y!==-1){b=_[y];let P=se(se({},b),m);E[y]=P,n.set(m.id,P)}else E.push(m),n.set(m.id,m);return E}),()=>{p(_=>{if(!b)return v&&n.delete(m.id),_.filter(({id:P})=>P!==m.id);let y=_.findIndex(({id:P})=>P===m.id);if(y===-1)return _;let E=_.slice();return E[y]=b,n.set(m.id,b),E})}},f=m=>d(m,p=>s.setState("items",p),!0);return He(se({},l),{registerItem:f,renderItem:m=>eo(f(m),d(m,p=>s.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:v}=s.getState();p=v.find(b=>b.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:s})}function Jd(e,t,r){return rr(t,[r.store]),De(e,r,"items","setItems"),e}function gu(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function $n(e){let t=[];for(let r of e)t.push(...r);return t}function an(e){return e.slice().reverse()}var nx={id:null};function Er(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function ix(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function em(e,t){return e.filter(r=>r.rowId===t)}function ax(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[nx]:[],...e.slice(0,o)]}function tm(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function rm(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function sx(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function lx(e,t,r){let o=rm(e);for(let n of e)for(let i=0;iet(a,["renderedItems","activeId"],l=>{a.setState("activeId",u=>{var d;return u!==void 0?u:(d=Er(l.renderedItems))==null?void 0:d.id})}));let s=(l="next",u={})=>{var d,f;let m=a.getState(),{skip:p=0,activeId:v=m.activeId,focusShift:b=m.focusShift,focusLoop:x=m.focusLoop,focusWrap:_=m.focusWrap,includesBaseElement:y=m.includesBaseElement,renderedItems:E=m.renderedItems,rtl:P=m.rtl}=u,A=l==="up"||l==="down",R=l==="next"||l==="down",D=R?P&&!A:!P||A,C=b&&!p,S=A?$n(lx(tm(E),v,C)):E;if(S=D?an(S):S,S=A?ux(S):S,v==null)return(d=Er(S))==null?void 0:d.id;let N=S.find(O=>O.id===v);if(!N)return(f=Er(S))==null?void 0:f.id;let M=S.some(O=>O.rowId),V=S.indexOf(N),g=S.slice(V+1),w=em(g,N.rowId);if(p){let O=ix(w,v),G=O.slice(p)[0]||O[O.length-1];return G?.id}let I=x&&(A?x!=="horizontal":x!=="vertical"),h=M&&_&&(A?_!=="horizontal":_!=="vertical"),k=R?(!M||A)&&I&&y:A?y:!1;if(I){let O=h&&!k?S:em(S,N.rowId),G=ax(O,v,k),K=Er(G,v);return K?.id}if(h){let O=Er(k?w:g,v);return k?O?.id||null:O?.id}let j=Er(w,v);return!j&&k?null:j?.id};return He(se(se({},o),a),{setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",u=>u+1))},first:()=>{var l;return(l=Er(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=Er(an(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))})}function nm(e){let t=jt(e.id);return B({id:t},e)}function im(e,t,r){return e=Jd(e,t,r),De(e,r,"activeId","setActiveId"),De(e,r,"includesBaseElement"),De(e,r,"virtualFocus"),De(e,r,"orientation"),De(e,r,"rtl"),De(e,r,"focusLoop"),De(e,r,"focusWrap"),De(e,r,"focusShift"),e}function am(e={}){let t=Ao(e.store,Un(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=oe(e.open,r?.open,e.defaultOpen,!1),n=oe(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:oe(r?.contentElement,null),disclosureElement:oe(r?.disclosureElement,null)},a=St(i,t);return Je(a,()=>et(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),Je(a,()=>rn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Je(a,()=>et(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),He(se({},a),{disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)})}function sm(e,t,r){return rr(t,[r.store,r.disclosure]),De(e,r,"open","setOpen"),De(e,r,"mounted","setMounted"),De(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}function lm(e={}){return am(e)}function um(e,t,r){return sm(e,t,r)}function cm(e={}){var t=e,{popover:r}=t,o=pa(t,["popover"]);let n=Ao(o.store,Un(r,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let i=n?.getState(),a=lm(He(se({},o),{store:n})),s=oe(o.placement,i?.placement,"bottom"),l=He(se({},a.getState()),{placement:s,currentPlacement:s,anchorElement:oe(i?.anchorElement,null),popoverElement:oe(i?.popoverElement,null),arrowElement:oe(i?.arrowElement,null),rendered:Symbol("rendered")}),u=St(l,a,n);return He(se(se({},a),u),{setAnchorElement:d=>u.setState("anchorElement",d),setPopoverElement:d=>u.setState("popoverElement",d),setArrowElement:d=>u.setState("arrowElement",d),render:()=>u.setState("rendered",Symbol("rendered"))})}function fm(e,t,r){return rr(t,[r.popover]),De(e,r,"placement"),um(e,t,r)}var cx=Co()&&lu();function dm(e={}){var t=e,{tag:r}=t,o=pa(t,["tag"]);let n=Ao(o.store,vu(r,["value","rtl"]));let i=r?.getState(),a=n?.getState(),s=oe(o.activeId,a?.activeId,o.defaultActiveId,null),l=om(He(se({},o),{activeId:s,includesBaseElement:oe(o.includesBaseElement,a?.includesBaseElement,!0),orientation:oe(o.orientation,a?.orientation,"vertical"),focusLoop:oe(o.focusLoop,a?.focusLoop,!0),focusWrap:oe(o.focusWrap,a?.focusWrap,!0),virtualFocus:oe(o.virtualFocus,a?.virtualFocus,!0)})),u=cm(He(se({},o),{placement:oe(o.placement,a?.placement,"bottom-start")})),d=oe(o.value,a?.value,o.defaultValue,""),f=oe(o.selectedValue,a?.selectedValue,i?.values,o.defaultSelectedValue,""),m=Array.isArray(f),p=He(se(se({},l.getState()),u.getState()),{value:d,selectedValue:f,resetValueOnSelect:oe(o.resetValueOnSelect,a?.resetValueOnSelect,m),resetValueOnHide:oe(o.resetValueOnHide,a?.resetValueOnHide,m&&!r),activeValue:a?.activeValue}),v=St(p,l,u,n);return cx&&Je(v,()=>et(v,["virtualFocus"],()=>{v.setState("virtualFocus",!1)})),Je(v,()=>{if(r)return eo(et(v,["selectedValue"],b=>{Array.isArray(b.selectedValue)&&r.setValues(b.selectedValue)}),et(r,["values"],b=>{v.setState("selectedValue",b.values)}))}),Je(v,()=>et(v,["resetValueOnHide","mounted"],b=>{b.resetValueOnHide&&(b.mounted||v.setState("value",d))})),Je(v,()=>et(v,["open"],b=>{b.open||(v.setState("activeId",s),v.setState("moves",0))})),Je(v,()=>et(v,["moves","activeId"],(b,x)=>{b.moves===x.moves&&v.setState("activeValue",void 0)})),Je(v,()=>no(v,["moves","renderedItems"],(b,x)=>{if(b.moves===x.moves)return;let{activeId:_}=v.getState(),y=l.item(_);v.setState("activeValue",y?.value)})),He(se(se(se({},u),l),v),{tag:r,setValue:b=>v.setState("value",b),resetValue:()=>v.setState("value",p.value),setSelectedValue:b=>v.setState("selectedValue",b)})}function dx(e){let t=$d();return e=Q(B({},e),{tag:e.tag!==void 0?e.tag:t}),nm(e)}function mx(e,t,r){return rr(t,[r.tag]),De(e,r,"value","setValue"),De(e,r,"selectedValue","setSelectedValue"),De(e,r,"resetValueOnHide"),De(e,r,"resetValueOnSelect"),Object.assign(im(fm(e,t,r),t,r),{tag:r.tag})}function hu(e={}){e=dx(e);let[t,r]=nn(dm,e);return mx(t,r,e)}var Kn=Tt(),qO=Kn.useContext,YO=Kn.useScopedContext,bu=Kn.useProviderContext,mm=Kn.ContextProvider,pm=Kn.ScopedContextProvider;var xu=c(me(),1),Zn=Tt([mm],[pm]),ZO=Zn.useContext,XO=Zn.useScopedContext,QO=Zn.useProviderContext,vm=Zn.ContextProvider,Sa=Zn.ScopedContextProvider,JO=(0,xu.createContext)(void 0),eP=(0,xu.createContext)(void 0);var Xn=Tt([vm],[Sa]),nP=Xn.useContext,iP=Xn.useScopedContext,gm=Xn.useProviderContext,hm=Xn.ContextProvider,bm=Xn.ScopedContextProvider;var Ca=c(me(),1),Ea=(0,Ca.createContext)(void 0),Qn=Tt([hm,en],[bm,wa]),wu=Qn.useContext,sn=Qn.useScopedContext,Oa=Qn.useProviderContext,xm=Qn.ContextProvider,wm=Qn.ScopedContextProvider,Pa=(0,Ca.createContext)(void 0),ym=(0,Ca.createContext)(!1);var px="div",yu=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=gm();return o=o||i,n=Q(B({},n),{ref:ke(o?.setAnchorElement,n.ref)}),n}),vP=xe(function(t){let r=yu(t);return _e(px,r)});function _m(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function ir(e,t){return t&&e.item(t)||null}function Sm(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Cm(e,t=!1){if(yt(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=Sr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var _u=Symbol("FOCUS_SILENTLY");function Em(e){e[_u]=!0,e.focus({preventScroll:!0})}function Om(e){let t=e[_u];return delete e[_u],t}function Io(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var Pm=c(me(),1),Am=(0,Pm.createContext)(!0);var Im="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function Jn(e){return!(!e.matches(Im)||!nu(e)||e.closest("[inert]"))}function Vm(e){for(;e&&!Jn(e);)e=e.closest(Im);return e||null}function Ht(e){let t=So(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function Su(e){let t=So(e);if(!t)return!1;if(er(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function Tm(e){!Su(e)&&Jn(e)&&e.focus()}function Rm(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(se({block:"nearest",inline:"nearest"},t))):e.focus()}var Mt=c(me(),1),vx="div",Nm=Co(),gx=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],hx=Symbol("safariFocusAncestor");function km(e,t){e&&(e[hx]=t)}function bx(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?gx.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function xx(e){return"labels"in e?e.labels:null}function Dm(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function wx(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function yx(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function _x(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function Cu(e,t){return ne(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var Eu=!0;function Sx(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(Eu=!1))}function Cx(e){e.metaKey||e.ctrlKey||e.altKey||(Eu=!0)}var ei=Se(function(t){var r=t,{focusable:o=!0,accessibleWhenDisabled:n,autoFocus:i,onFocusVisible:a}=r,s=ae(r,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);let l=(0,Mt.useRef)(null);(0,Mt.useEffect)(()=>{o&&(tr("mousedown",Sx,!0),tr("keydown",Cx,!0))},[o]),Nm&&(0,Mt.useEffect)(()=>{if(!o)return;let h=l.current;if(!h||!Dm(h))return;let k=xx(h);if(!k)return;let j=()=>queueMicrotask(()=>h.focus());for(let O of k)O.addEventListener("mouseup",j);return()=>{for(let O of k)O.removeEventListener("mouseup",j)}},[o]);let u=o&&_o(s),d=!!u&&!n,[f,m]=(0,Mt.useState)(!1);(0,Mt.useEffect)(()=>{o&&d&&f&&m(!1)},[o,d,f]),(0,Mt.useEffect)(()=>{if(!o||!f)return;let h=l.current;if(!h||typeof IntersectionObserver>"u")return;let k=new IntersectionObserver(()=>{Jn(h)||m(!1)});return k.observe(h),()=>k.disconnect()},[o,f]);let p=Cu(s.onKeyPressCapture,u),v=Cu(s.onMouseDownCapture,u),b=Cu(s.onClickCapture,u),x=s.onMouseDown,_=ne(h=>{if(x?.(h),h.defaultPrevented||!o)return;let k=h.currentTarget;if(!Nm||ga(h)||!Cr(k)&&!Dm(k))return;let j=!1,O=()=>{j=!0},G={capture:!0,once:!0};k.addEventListener("focusin",O,G);let K=Vm(k.parentElement);km(K,!0),ro(k,"mouseup",()=>{k.removeEventListener("focusin",O,!0),km(K,!1),!j&&Tm(k)})}),y=(h,k)=>{if(k&&(h.currentTarget=k),!o)return;let j=h.currentTarget;j&&Ht(j)&&(a?.(h),!h.defaultPrevented&&(j.dataset.focusVisible="true",m(!0)))},E=s.onKeyDownCapture,P=ne(h=>{if(E?.(h),h.defaultPrevented||!o||f||h.metaKey||h.altKey||h.ctrlKey||!mt(h))return;let k=h.currentTarget;ro(k,"focusout",()=>y(h,k))}),A=s.onFocusCapture,R=ne(h=>{if(A?.(h),h.defaultPrevented||!o)return;if(!mt(h)){m(!1);return}let k=h.currentTarget,j=()=>y(h,k);Eu||bx(h.target)?ro(h.target,"focusout",j):m(!1)}),D=s.onBlur,C=ne(h=>{D?.(h),o&&ha(h)&&m(!1)}),S=(0,Mt.useContext)(Am),N=ne(h=>{o&&i&&h&&S&&queueMicrotask(()=>{Ht(h)||Jn(h)&&h.focus()})}),M=Md(l),V=o&&wx(M),g=o&&yx(M),w=s.style,I=(0,Mt.useMemo)(()=>d?B({pointerEvents:"none"},w):w,[d,w]);return s=Q(B({"data-focus-visible":o&&f||void 0,"data-autofocus":i||void 0,"aria-disabled":u||void 0},s),{ref:ke(l,N,s.ref),style:I,tabIndex:_x(o,d,V,g,s.tabIndex),disabled:g&&d?!0:void 0,contentEditable:u?void 0:s.contentEditable,onKeyPressCapture:p,onClickCapture:b,onMouseDownCapture:v,onMouseDown:_,onKeyDownCapture:P,onFocusCapture:R,onBlur:C}),nt(s)}),DP=xe(function(t){let r=ei(t);return _e(vx,r)});var ar=c(me(),1),Fm=c(T(),1),Ex="div";function Ox(e){return e.some(t=>!!t.rowId)}function Px(e){let t=e.target;return t&&!yt(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function Ax(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function Mm(e,t,r){return ne(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!mt(o)||Ax(o)||Px(o))return;let i=e.getState(),a=(n=ir(e,i.activeId))==null?void 0:n.element;if(!a)return;let s=o,{view:l}=s,u=ae(s,["view"]),d=r?.current;a!==d&&a.focus(),Id(a,o.type,u)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function Ix(e){return _m($n(an(Sm(e))))}function Vx(e){let[t,r]=(0,ar.useState)(!1),o=(0,ar.useCallback)(()=>r(!0),[]),n=e.useState(i=>ir(e,i.activeId));return(0,ar.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var Ou=Se(function(t){var r=t,{store:o,composite:n=!0,focusOnMove:i=n,moveOnKeyPress:a=!0}=r,s=ae(r,["store","composite","focusOnMove","moveOnKeyPress"]);let l=qd();o=o||l,ot(o,!1);let u=(0,ar.useRef)(null),d=(0,ar.useRef)(null),f=Vx(o),m=o.useState("moves"),[,p]=Dd(n?o.setBaseElement:null);(0,ar.useEffect)(()=>{var g;if(!o||!m||!n||!i)return;let{activeId:w}=o.getState(),I=(g=ir(o,w))==null?void 0:g.element;I&&Rm(I)},[o,m,n,i]),Ne(()=>{if(!o||!m||!n)return;let{baseElement:g,activeId:w}=o.getState();if(!(w===null)||!g)return;let h=d.current;d.current=null,h&&Eo(h,{relatedTarget:g}),Ht(g)||g.focus()},[o,m,n]);let v=o.useState("activeId"),b=o.useState("virtualFocus");Ne(()=>{var g;if(!o||!n||!b)return;let w=d.current;if(d.current=null,!w)return;let h=((g=ir(o,v))==null?void 0:g.element)||So(w);h!==w&&Eo(w,{relatedTarget:h})},[o,v,b,n]);let x=Mm(o,s.onKeyDownCapture,d),_=Mm(o,s.onKeyUpCapture,d),y=s.onFocusCapture,E=ne(g=>{if(y?.(g),g.defaultPrevented||!o)return;let{virtualFocus:w}=o.getState();if(!w)return;let I=g.relatedTarget,h=Om(g.currentTarget);mt(g)&&h&&(g.stopPropagation(),d.current=I)}),P=s.onFocus,A=ne(g=>{if(P?.(g),g.defaultPrevented||!n||!o)return;let{relatedTarget:w}=g,{virtualFocus:I}=o.getState();I?mt(g)&&!Io(o,w)&&queueMicrotask(f):mt(g)&&o.setActiveId(null)}),R=s.onBlurCapture,D=ne(g=>{var w;if(R?.(g),g.defaultPrevented||!o)return;let{virtualFocus:I,activeId:h}=o.getState();if(!I)return;let k=(w=ir(o,h))==null?void 0:w.element,j=g.relatedTarget,O=Io(o,j),G=d.current;d.current=null,mt(g)&&O?(j===k?G&&G!==j&&Eo(G,g):k?Eo(k,g):G&&Eo(G,g),g.stopPropagation()):!Io(o,g.target)&&k&&Eo(k,g)}),C=s.onKeyDown,S=We(a),N=ne(g=>{var w;if(C?.(g),g.defaultPrevented||!o||!mt(g))return;let{orientation:I,renderedItems:h,activeId:k}=o.getState(),j=ir(o,k);if((w=j?.element)!=null&&w.isConnected)return;let O=I!=="horizontal",G=I!=="vertical",K=Ox(h);if((g.key==="ArrowLeft"||g.key==="ArrowRight"||g.key==="Home"||g.key==="End")&&yt(g.currentTarget))return;let Pe={ArrowUp:(K||O)&&(()=>{if(K){let q=Ix(h);return q?.id}return o?.last()}),ArrowRight:(K||G)&&o.first,ArrowDown:(K||O)&&o.first,ArrowLeft:(K||G)&&o.last,Home:o.first,End:o.last,PageUp:o.first,PageDown:o.last}[g.key];if(Pe){let q=Pe();if(q!==void 0){if(!S(g))return;g.preventDefault(),o.move(q)}}});s=or(s,g=>(0,Fm.jsx)(en,{value:o,children:g}),[o]);let M=o.useState(g=>{var w;if(o&&n&&g.virtualFocus)return(w=ir(o,g.activeId))==null?void 0:w.id});s=Q(B({"aria-activedescendant":M},s),{ref:ke(u,p,s.ref),onKeyDownCapture:x,onKeyUpCapture:_,onFocusCapture:E,onFocus:A,onBlurCapture:D,onKeyDown:N});let V=o.useState(g=>n&&(g.virtualFocus||g.activeId===null));return s=ei(B({focusable:V},s)),s}),XP=xe(function(t){let r=Ou(t);return _e(Ex,r)});var it=c(me(),1),Tx="input";function Lm(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Bm(e,t){return!t||e==null?!1:(e=jn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function Rx(e){return e.type==="input"}function Nx(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function kx(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var Dx=Se(function(t){var r=t,{store:o,focusable:n=!0,autoSelect:i=!1,getAutoSelectId:a,setValueOnChange:s,showMinLength:l=0,showOnChange:u,showOnMouseDown:d,showOnClick:f=d,showOnKeyDown:m,showOnKeyPress:p=m,blurActiveItemOnClick:v,setValueOnClick:b=!0,moveOnKeyPress:x=!0,autoComplete:_="list"}=r,y=ae(r,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);let E=Oa();o=o||E,ot(o,!1);let P=(0,it.useRef)(null),[A,R]=Bd(),D=(0,it.useRef)(!1),C=(0,it.useRef)(!1),S=o.useState(L=>L.virtualFocus&&i),N=_==="inline"||_==="both",[M,V]=(0,it.useState)(N);Ld(()=>{N&&V(!0)},[N]);let g=o.useState("value"),w=(0,it.useRef)();(0,it.useEffect)(()=>et(o,["selectedValue","activeId"],(L,fe)=>{w.current=fe.selectedValue}),[]);let I=o.useState(L=>{var fe;if(N&&M&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(fe=w.current)!=null&&fe.includes(L.activeValue))))return L.activeValue}),h=o.useState("renderedItems"),k=o.useState("open"),j=o.useState("contentElement"),O=(0,it.useMemo)(()=>{if(!N||!M)return g;if(Lm(h,I,S)){if(Bm(g,I)){let fe=I?.slice(g.length)||"";return g+fe}return g}return I||g},[N,M,h,I,S,g]);(0,it.useEffect)(()=>{let L=P.current;if(!L)return;let fe=()=>V(!0);return L.addEventListener("combobox-item-move",fe),()=>{L.removeEventListener("combobox-item-move",fe)}},[]),(0,it.useEffect)(()=>{if(!N||!M||!I||!Lm(h,I,S)||!Bm(g,I))return;let fe=Bn;return queueMicrotask(()=>{let qe=P.current;if(!qe)return;let{start:Ye,end:Ft}=Qo(qe),gr=g.length,ut=I.length;zn(qe,gr,ut),fe=()=>{if(!Ht(qe))return;let{start:vo,end:Ch}=Qo(qe);vo===gr&&Ch===ut&&zn(qe,Ye,Ft)}}),()=>fe()},[A,N,M,I,h,S,g]);let G=(0,it.useRef)(null),K=ne(a),Xe=(0,it.useRef)(null);(0,it.useEffect)(()=>{if(!k||!j)return;let L=Jo(j);if(!L)return;G.current=L;let fe=()=>{D.current=!1},qe=()=>{if(!o||!D.current)return;let{activeId:Ft}=o.getState();Ft!==null&&Ft!==Xe.current&&(D.current=!1)},Ye={passive:!0,capture:!0};return L.addEventListener("wheel",fe,Ye),L.addEventListener("touchmove",fe,Ye),L.addEventListener("scroll",qe,Ye),()=>{L.removeEventListener("wheel",fe,!0),L.removeEventListener("touchmove",fe,!0),L.removeEventListener("scroll",qe,!0)}},[k,j,o]),Ne(()=>{g&&(C.current||(D.current=!0))},[g]),Ne(()=>{S!=="always"&&k||(D.current=k)},[S,k]);let rt=o.useState("resetValueOnSelect");rr(()=>{var L,fe;let qe=D.current;if(!o||!k||!qe&&!rt)return;let{baseElement:Ye,contentElement:Ft,activeId:gr}=o.getState();if(!(Ye&&!Ht(Ye))){if(Ft?.hasAttribute("data-placing")){let ut=new MutationObserver(R);return ut.observe(Ft,{attributeFilter:["data-placing"]}),()=>ut.disconnect()}if(S&&qe){let ut=K(h),vo=ut!==void 0?ut:(L=kx(h))!=null?L:o.first();Xe.current=vo,o.move(vo??null)}else{let ut=(fe=o.item(gr||o.first()))==null?void 0:fe.element;ut&&"scrollIntoView"in ut&&ut.scrollIntoView({block:"nearest",inline:"nearest"})}}},[o,k,A,g,S,rt,K,h]),(0,it.useEffect)(()=>{if(!N)return;let L=P.current;if(!L)return;let fe=[L,j].filter(Ye=>!!Ye),qe=Ye=>{fe.every(Ft=>ha(Ye,Ft))&&o?.setValue(O)};for(let Ye of fe)Ye.addEventListener("focusout",qe);return()=>{for(let Ye of fe)Ye.removeEventListener("focusout",qe)}},[N,j,o,O]);let de=L=>L.currentTarget.value.length>=l,Pe=y.onChange,q=We(u??de),Ve=We(s??!o.tag),Qe=ne(L=>{if(Pe?.(L),L.defaultPrevented||!o)return;let fe=L.currentTarget,{value:qe,selectionStart:Ye,selectionEnd:Ft}=fe,gr=L.nativeEvent;if(D.current=!0,Rx(gr)&&(gr.isComposing&&(D.current=!1,C.current=!0),N)){let ut=gr.inputType==="insertText"||gr.inputType==="insertCompositionText",vo=Ye===qe.length;V(ut&&vo)}if(Ve(L)){let ut=qe===o.getState().value;o.setValue(qe),queueMicrotask(()=>{zn(fe,Ye,Ft)}),N&&S&&ut&&R()}q(L)&&o.show(),(!S||!D.current)&&o.setActiveId(null)}),qt=y.onCompositionEnd,kr=ne(L=>{D.current=!0,C.current=!1,qt?.(L),!L.defaultPrevented&&S&&R()}),Lo=y.onMouseDown,po=We(v??(()=>!!o?.getState().includesBaseElement)),As=We(b),Is=We(f??de),Vs=ne(L=>{Lo?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||o&&(po(L)&&o.setActiveId(null),As(L)&&o.setValue(O),Is(L)&&ro(L.currentTarget,"mouseup",o.show)))}),hc=y.onKeyDown,bh=We(p??de),xh=ne(L=>{if(hc?.(L),L.repeat||(D.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!o)return;let{open:fe}=o.getState();fe||(L.key==="ArrowUp"||L.key==="ArrowDown")&&bh(L)&&(L.preventDefault(),o.show())}),bc=y.onBlur,wh=ne(L=>{D.current=!1,bc?.(L),L.defaultPrevented}),yh=jt(y.id),_h=Nx(_)?_:void 0,Sh=o.useState(L=>L.activeId===null);return y=Q(B({id:yh,role:"combobox","aria-autocomplete":_h,"aria-haspopup":au(j,"listbox"),"aria-expanded":k,"aria-controls":j?.id,"data-active-item":Sh||void 0,value:O},y),{ref:ke(P,y.ref),onChange:Qe,onCompositionEnd:kr,onMouseDown:Vs,onKeyDown:xh,onBlur:wh}),y=Ou(Q(B({store:o,focusable:n},y),{moveOnKeyPress:L=>ru(x,L)?!1:(N&&V(!0),!0)})),y=yu(B({store:o},y)),B({autoComplete:"off"},y)}),Aa=xe(function(t){let r=Dx(t);return _e(Tx,r)});var jm=c(T(),1);function Ia(e={}){let t=hu(e);return(0,jm.jsx)(xm,{value:t,children:e.children})}var io=c(me(),1),Mx="button";function Hm(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?Cr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?Cr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var Fx=Symbol("command"),Pu=Se(function(t){var r=t,{clickOnEnter:o=!0,clickOnSpace:n=!0}=r,i=ae(r,["clickOnEnter","clickOnSpace"]);let a=(0,io.useRef)(null),[s,l]=(0,io.useState)(!1);(0,io.useEffect)(()=>{a.current&&l(Cr(a.current))},[]);let[u,d]=(0,io.useState)(!1),f=(0,io.useRef)(!1),m=_o(i),[p,v]=jd(i,Fx,!0),b=i.onKeyDown,x=ne(E=>{b?.(E);let P=E.currentTarget;if(E.defaultPrevented||p||m||!mt(E)||yt(P)||P.isContentEditable)return;let A=o&&E.key==="Enter",R=n&&E.key===" ",D=E.key==="Enter"&&!o,C=E.key===" "&&!n;if(D||C){E.preventDefault();return}if(A||R){let S=Hm(E);if(A){if(!S){E.preventDefault();let N=E,{view:M}=N,V=ae(N,["view"]),g=()=>cu(P,V);uu()?ro(P,"keyup",g):queueMicrotask(g)}}else R&&(f.current=!0,S||(E.preventDefault(),d(!0)))}}),_=i.onKeyUp,y=ne(E=>{if(_?.(E),E.defaultPrevented||p||m||E.metaKey)return;let P=n&&E.key===" ";if(f.current&&P&&(f.current=!1,!Hm(E))){E.preventDefault(),d(!1);let A=E.currentTarget,R=E,{view:D}=R,C=ae(R,["view"]);queueMicrotask(()=>cu(A,C))}});return i=Q(B(B({"data-active":u||void 0,type:s?"button":void 0},v),i),{ref:ke(a,i.ref),onKeyDown:x,onKeyUp:y}),i=ei(i),i}),_A=xe(function(t){let r=Pu(t);return _e(Mx,r)});var Va=c(me(),1),zm=c(T(),1),Lx="span";function Wm(e){return jn(e).toLowerCase()}function Bx(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function jx(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function Hx(e){return e.sort(([t],[r])=>t-r)}function Wx(e,t){if(!e||!t)return e;let r=gu(t).filter(Boolean).map(Wm),o=[],n=(l,u=!1)=>(0,zm.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:l},o.length),i=Hx(jx(Bx(Wm(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,u],d)=>{var f;let m=e.slice(l,l+u),p=(f=i[d+1])==null?void 0:f[0],v=e.slice(l+u,p);return[m,v]})].forEach((l,u)=>{l&&o.push(n(l,u%2===0))}),o}var zx=Se(function(t){var r=t,{store:o,value:n,userValue:i}=r,a=ae(r,["store","value","userValue"]);let s=sn();o=o||s;let l=(0,Va.useContext)(Pa),u=n??l,d=on(o,m=>i??m?.value),f=(0,Va.useMemo)(()=>{if(u)return d?Wx(u,d):u},[u,d]);return a=B({children:f},a),nt(a)}),Ta=xe(function(t){let r=zx(t);return _e(Lx,r)});var Gm=c(me(),1),Gx="div";function qm(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function qx(e){let t=qm(e);return t?er(e.currentTarget,t):!1}var Au=Symbol("composite-hover");function Yx(e){let t=qm(e);if(!t)return!1;do{if(Vt(t,Au)&&t[Au])return!0;t=t.parentElement}while(t);return!1}var Iu=Se(function(t){var r=t,{store:o,focusOnHover:n=!0,blurOnHoverEnd:i=!!n}=r,a=ae(r,["store","focusOnHover","blurOnHoverEnd"]);let s=xa();o=o||s,ot(o,!1);let l=Hd(),u=a.onMouseMove,d=We(n),f=ne(x=>{if(u?.(x),!x.defaultPrevented&&l()&&d(x)){if(!Su(x.currentTarget)){let _=o?.getState().baseElement;_&&!Ht(_)&&_.focus()}o?.setActiveId(x.currentTarget.id)}}),m=a.onMouseLeave,p=We(i),v=ne(x=>{var _;m?.(x),!x.defaultPrevented&&l()&&(qx(x)||Yx(x)||d(x)&&p(x)&&(o?.setActiveId(null),(_=o?.getState().baseElement)==null||_.focus()))}),b=(0,Gm.useCallback)(x=>{x&&(x[Au]=!0)},[]);return a=Q(B({},a),{ref:ke(b,a.ref),onMouseMove:f,onMouseLeave:v}),nt(a)}),LA=oo(xe(function(t){let r=Iu(t);return _e(Gx,r)}));var Ra=c(me(),1),Ux="div",Vu=Se(function(t){var r=t,{store:o,shouldRegisterItem:n=!0,getItem:i=Hn,element:a}=r,s=ae(r,["store","shouldRegisterItem","getItem","element"]);let l=Wd();o=o||l;let u=jt(s.id),d=(0,Ra.useRef)(a);return(0,Ra.useEffect)(()=>{let f=d.current;if(!u||!f||!n)return;let m=i({id:u,element:f});return o?.renderItem(m)},[u,n,i,o]),s=Q(B({},s),{ref:ke(d,s.ref)}),nt(s)}),qA=xe(function(t){let r=Vu(t);return _e(Ux,r)});var Or=c(me(),1),Um=c(T(),1),$x="button";function Kx(e){return Wn(e)?!0:e.tagName==="INPUT"&&!Cr(e)}function Zx(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function Xx(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function Ym(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=Jo(e);if(!a)return;let s=Zx(a,o),l,u;for(let d=0;d=0){u!==void 0&&uK.rowId===y);return b.ariaPosInSet+G.findIndex(K=>K.id===p)},isTabbable(O){if(!O?.renderedItems.length)return!0;if(O.virtualFocus)return!1;if(s)return!0;if(O.activeId===null)return!1;let G=o?.item(O.activeId);return G?.disabled||!G?.element?!0:O.activeId===p}}),C=(0,Or.useCallback)(O=>{var G;let K=Q(B({},O),{id:p||O.id,rowId:y,disabled:!!_,children:(G=O.element)==null?void 0:G.textContent});return l?l(K):K},[p,y,_,l]),S=f.onFocus,N=(0,Or.useRef)(!1),M=ne(O=>{if(S?.(O),O.defaultPrevented||ga(O)||!p||!o||Qx(O,o))return;let{virtualFocus:G,baseElement:K}=o.getState();if(o.setActiveId(p),Wn(O.currentTarget)&&Cm(O.currentTarget),!G||!mt(O)||Kx(O.currentTarget)||!K?.isConnected)return;Co()&&O.currentTarget.hasAttribute("data-autofocus")&&O.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),N.current=!0,O.relatedTarget===K||Io(o,O.relatedTarget)?Em(K):K.focus()}),V=f.onBlurCapture,g=ne(O=>{if(V?.(O),O.defaultPrevented)return;let G=o?.getState();G?.virtualFocus&&N.current&&(N.current=!1,O.preventDefault(),O.stopPropagation())}),w=f.onKeyDown,I=We(i),h=We(a),k=ne(O=>{if(w?.(O),O.defaultPrevented||!mt(O)||!o)return;let{currentTarget:G}=O,K=o.getState(),Xe=o.item(p),rt=!!Xe?.rowId,de=K.orientation!=="horizontal",Pe=K.orientation!=="vertical",q=()=>!!(rt||Pe||!K.baseElement||!yt(K.baseElement)),Qe={ArrowUp:(rt||de)&&o.up,ArrowRight:(rt||Pe)&&o.next,ArrowDown:(rt||de)&&o.down,ArrowLeft:(rt||Pe)&&o.previous,Home:()=>{if(q())return!rt||O.ctrlKey?o?.first():o?.previous(-1)},End:()=>{if(q())return!rt||O.ctrlKey?o?.last():o?.next(-1)},PageUp:()=>Ym(G,o,o?.up,!0),PageDown:()=>Ym(G,o,o?.down)}[O.key];if(Qe){if(Wn(G)){let kr=Qo(G),Lo=Pe&&O.key==="ArrowLeft",po=Pe&&O.key==="ArrowRight",As=de&&O.key==="ArrowUp",Is=de&&O.key==="ArrowDown";if(po||Is){let{length:Vs}=iu(G);if(kr.end!==Vs)return}else if((Lo||As)&&kr.start!==0)return}let qt=Qe();if(I(O)||qt!==void 0){if(!h(O))return;O.preventDefault(),o.move(qt)}}}),j=(0,Or.useMemo)(()=>({id:p,baseElement:E}),[p,E]);return f=or(f,O=>(0,Um.jsx)(Yd.Provider,{value:j,children:O}),[j]),f=Q(B({id:p,"data-active-item":P||void 0},f),{ref:ke(v,f.ref),tabIndex:D?f.tabIndex:-1,onFocus:M,onBlurCapture:g,onKeyDown:k}),f=Pu(f),f=Vu(Q(B({store:o},f),{getItem:C,shouldRegisterItem:p?f.shouldRegisterItem:!1})),nt(Q(B({},f),{"aria-setsize":A,"aria-posinset":R}))}),iI=oo(xe(function(t){let r=Tu(t);return _e($x,r)}));var Na=c(me(),1),Ru=c(T(),1),Jx="div";function ew(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function tw(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var $m=Se(function(t){var r=t,{store:o,value:n,hideOnClick:i,setValueOnClick:a,selectValueOnClick:s=!0,resetValueOnSelect:l,focusOnHover:u=!1,moveOnKeyPress:d=!0,getItem:f}=r,m=ae(r,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]),p;let v=sn();o=o||v,ot(o,!1);let{resetValueOnSelectState:b,multiSelectable:x,selected:_}=_a(o,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(g){return Array.isArray(g.selectedValue)},selected(g){return ew(g.selectedValue,n)}}),y=(0,Na.useCallback)(g=>{let w=Q(B({},g),{value:n});return f?f(w):w},[n,f]);a=a??!x,i=i??(n!=null&&!x);let E=m.onClick,P=We(a),A=We(s),R=We((p=l??b)!=null?p:x),D=We(i),C=ne(g=>{E?.(g),!g.defaultPrevented&&(Ad(g)||Pd(g)||(n!=null&&(A(g)&&(R(g)&&o?.resetValue(),o?.setSelectedValue(w=>Array.isArray(w)?w.includes(n)?w.filter(I=>I!==n):[...w,n]:n)),P(g)&&o?.setValue(n)),D(g)&&o?.hide()))}),S=m.onKeyDown,N=ne(g=>{if(S?.(g),g.defaultPrevented)return;let w=o?.getState().baseElement;if(!w||Ht(w))return;(g.key.length===1||g.key==="Backspace"||g.key==="Delete")&&(queueMicrotask(()=>w.focus()),yt(w)&&o?.setValue(w.value))});x&&_!=null&&(m=B({"aria-selected":_},m)),m=or(m,g=>(0,Ru.jsx)(Pa.Provider,{value:n,children:(0,Ru.jsx)(ym.Provider,{value:_??!1,children:g})}),[n,_]);let M=(0,Na.useContext)(Ea);m=Q(B({role:tw(M),children:n},m),{onClick:C,onKeyDown:N});let V=We(d);return m=Tu(Q(B({store:o},m),{getItem:y,moveOnKeyPress:g=>{if(!V(g))return!1;let w=new Event("combobox-item-move"),I=o?.getState().baseElement;return I?.dispatchEvent(w),!0}})),m=Iu(B({store:o,focusOnHover:u},m)),m}),ti=oo(xe(function(t){let r=$m(t);return _e(Jx,r)}));var rw="label",ow=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=Oa();o=o||i,ot(o,!1);let a=o.useState(s=>{var l;return(l=s.baseElement)==null?void 0:l.id});return n=B({htmlFor:a},n),nt(n)}),ka=oo(xe(function(t){let r=ow(t);return _e(rw,r)}));var ln=c(me(),1),Xm=c(rf(),1),Nu=c(T(),1),nw="div";function Km(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function iw(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function Zm(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function ku(e,t,r){return!r&&t!==!1&&(!e||!!t)}var aw=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=bu();o=o||a,ot(o,!1);let s=(0,ln.useRef)(null),l=jt(i.id),[u,d]=(0,ln.useState)(null),f=o.useState("open"),m=o.useState("mounted"),p=o.useState("animated"),v=o.useState("contentElement"),b=on(o.disclosure,"contentElement");Ne(()=>{s.current&&o?.setContentElement(s.current)},[o]),Ne(()=>{let E;return o?.setState("animated",P=>(E=P,!0)),()=>{E!==void 0&&o?.setState("animated",E)}},[o]),Ne(()=>{if(p){if(!v?.isConnected){d(null);return}return iw(()=>{d(f?"enter":m?"leave":null)})}},[p,v,f,m]),Ne(()=>{if(!o||!p||!u||!v)return;let E=()=>o?.setState("animating",!1),P=()=>(0,Xm.flushSync)(E);if(u==="leave"&&f||u==="enter"&&!f)return;if(typeof p=="number")return Km(p,P);let{transitionDuration:A,animationDuration:R,transitionDelay:D,animationDelay:C}=getComputedStyle(v),{transitionDuration:S="0",animationDuration:N="0",transitionDelay:M="0",animationDelay:V="0"}=b?getComputedStyle(b):{},g=Zm(D,C,M,V),w=Zm(A,R,S,N),I=g+w;if(!I){u==="enter"&&o.setState("animated",!1),E();return}let h=1e3/60,k=Math.max(I-h,0);return Km(k,P)},[o,p,v,b,f,u]),i=or(i,E=>(0,Nu.jsx)(Sa,{value:o,children:E}),[o]);let x=ku(m,i.hidden,n),_=i.style,y=(0,ln.useMemo)(()=>x?Q(B({},_),{display:"none"}):_,[x,_]);return i=Q(B({id:l,"data-open":f||void 0,"data-enter":u==="enter"||void 0,"data-leave":u==="leave"||void 0,hidden:x},i),{ref:ke(l?o.setContentElement:null,s,i.ref),style:y}),nt(i)}),sw=xe(function(t){let r=aw(t);return _e(nw,r)}),NI=xe(function(t){var r=t,{unmountOnHide:o}=r,n=ae(r,["unmountOnHide"]);let i=bu(),a=n.store||i;return on(a,l=>!o||l?.mounted)===!1?null:(0,Nu.jsx)(sw,B({},n))});var Da=c(me(),1),Du=c(T(),1),lw="div",Qm=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=sn(!0),s=wu();o=o||s;let l=!!o&&o===a;ot(o,!1);let u=(0,Da.useRef)(null),d=jt(i.id),f=o.useState("mounted"),m=ku(f,i.hidden,n),p=m?Q(B({},i.style),{display:"none"}):i.style,v=o.useState(R=>Array.isArray(R.selectedValue)),b=Fd(u,"role",i.role),_=(b==="listbox"||b==="tree"||b==="grid")&&v||void 0,[y,E]=(0,Da.useState)(!1),P=o.useState("contentElement");Ne(()=>{if(!f)return;let R=u.current;if(!R||P!==R)return;let D=()=>{E(!!R.querySelector("[role='listbox']"))},C=new MutationObserver(D);return C.observe(R,{subtree:!0,childList:!0,attributeFilter:["role"]}),D(),()=>C.disconnect()},[f,P]),y||(i=B({role:"listbox","aria-multiselectable":_},i)),i=or(i,R=>(0,Du.jsx)(wm,{value:o,children:(0,Du.jsx)(Ea.Provider,{value:b,children:R})}),[o,b]);let A=d&&(!a||!l)?o.setContentElement:null;return i=Q(B({id:d,hidden:m},i),{ref:ke(A,u,i.ref),style:p}),nt(i)}),ri=xe(function(t){let r=Qm(t);return _e(lw,r)});var ap=c(rp(),1);var sp=c(Rt(),1),Pr=c(Z(),1),Vo=c(W(),1),Wt=c(Y(),1);var pw=[],oi=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:pw;var ni=c(W(),1),vw=[];function pt({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:vw,[o,n]=(0,ni.useState)(r),[i,a]=(0,ni.useState)(!1);return(0,ni.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let u=Array.isArray(l)&&l.length>0?l:r;n(u)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var le=c(T(),1);function op(e=""){return(0,ap.default)(e.trim().toLowerCase())}var np=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function ip(e,t){return`${e}-${t}`}var lp=({selected:e})=>(0,le.jsx)("span",{className:U("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,le.jsx)(Wt.Icon,{icon:Pn})}),up=({selected:e})=>(0,le.jsx)("span",{className:U("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function cp({view:e,filter:t,onChangeView:r}){let o=(0,sp.useInstanceId)(cp,"dataviews-filter-list-box"),[n,i]=(0,Vo.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=oi(t,a);return(0,le.jsx)(Wt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Pr.sprintf)((0,Pr.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(ip(o,t.elements[0].value))},render:(0,le.jsx)(Wt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,le.jsxs)(Wt.Composite.Hover,{render:(0,le.jsx)(Wt.Composite.Item,{id:ip(o,l.value),render:(0,le.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(e.filters??[]).map(d=>d.field===t.field?{...d,operator:a.operator||t.operators[0],value:np(t,a,l.value)}:d)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:np(t,a,l.value)}];r({...e,page:1,filters:u})}}),children:[t.singleSelection&&(0,le.jsx)(up,{selected:s===l.value}),!t.singleSelection&&(0,le.jsx)(lp,{selected:s.includes(l.value)}),(0,le.jsx)("span",{children:l.label})]},l.value))})}function gw({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Vo.useState)(""),i=(0,Vo.useDeferredValue)(o),a=e.filters?.find(u=>u.field===t.field),s=oi(t,a),l=(0,Vo.useMemo)(()=>{let u=op(i);return t.elements.filter(d=>op(d.label).includes(u))},[t.elements,i]);return(0,le.jsxs)(Ia,{selectedValue:s,setSelectedValue:u=>{let d=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:u}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:u}];r({...e,page:1,filters:d})},setValue:n,children:[(0,le.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,le.jsx)(ka,{render:(0,le.jsx)(Wt.VisuallyHidden,{children:(0,Pr.__)("Search items")}),children:(0,Pr.__)("Search items")}),(0,le.jsx)(Aa,{autoSelect:"always",placeholder:(0,Pr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,le.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,le.jsx)(Wt.Icon,{icon:Pl})})]}),(0,le.jsxs)(ri,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(u=>(0,le.jsxs)(ti,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,le.jsx)(up,{selected:s===u.value}),!t.singleSelection&&(0,le.jsx)(lp,{selected:s.includes(u.value)}),(0,le.jsxs)("span",{children:[(0,le.jsx)(Ta,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,le.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!l.length&&(0,le.jsx)("p",{children:(0,Pr.__)("No results found")})]})]})}function fp(e){let{elements:t,isLoading:r}=pt({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,le.jsx)(Wt.Spinner,{})});if(t.length===0)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Pr.__)("No elements found")});let o=t.length>10?gw:cp;return(0,le.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var pp=c(mp(),1),vp=c(Rt(),1),Mu=c(W(),1),gp=c(Y(),1);var Fu=c(T(),1);function hp({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(u=>u.field===e.field),i=oi(e,n),a=(0,Mu.useMemo)(()=>{let u=o.find(d=>d.id===e.field);return u&&{...u,isValid:{},getValue:({item:d})=>d[u.id],setValue:({value:d})=>({[u.id]:d})}},[o,e.field]),s=(0,Mu.useMemo)(()=>(t.filters??[]).reduce((u,d)=>(u[d.field]=d.value,u),{}),[t.filters]),l=(0,vp.useEvent)(u=>{if(!a||!n)return;let d=a.getValue({item:u});(0,pp.default)(d,i)||r({...t,filters:(t.filters??[]).map(f=>f.field===e.field?{...f,operator:n.operator||e.operators[0],value:d===""?void 0:d}:f)})});return!a||!a.Edit||!n?null:(0,Fu.jsx)(gp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Fu.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var hw=Math.pow(10,8)*24*60*60*1e3,bV=-hw,Fa=6048e5,bp=864e5;var bw=3600;var xp=bw*24,xV=xp*7,xw=xp*365.2425,ww=xw/12,wV=ww*3,Lu=Symbol.for("constructDateFrom");function Ke(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Lu in e?e[Lu](t):e instanceof Date?new e.constructor(t):new Date(t)}function ge(e,t){return Ke(t||e,e)}function La(e,t,r){let o=ge(e,r?.in);return isNaN(t)?Ke(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function Ba(e,t,r){let o=ge(e,r?.in);if(isNaN(t))return Ke(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Ke(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var yw={};function ao(){return yw}function Ar(e,t){let r=ao(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=ge(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function Bu(e){let t=ge(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function wp(e,...t){let r=Ke.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function ju(e,t){let r=ge(e,t?.in);return r.setHours(0,0,0,0),r}function yp(e,t,r){let[o,n]=wp(r?.in,e,t),i=ju(o),a=ju(n),s=+i-Bu(i),l=+a-Bu(a);return Math.round((s-l)/bp)}function _p(e,t){let r=ja(e,t),o=Ke(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),To(o)}function Sp(e,t,r){return La(e,t*7,r)}function Cp(e,t,r){return Ba(e,t*12,r)}function Ep(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function un(e){return!(!Ep(e)&&typeof e!="number"||isNaN(+ge(e)))}function Op(e,t){let r=ge(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ha(e,t){let r=ge(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var _w={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Pp=(e,t,r)=>{let o,n=_w[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Wa(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Sw={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Cw={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ew={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ap={date:Wa({formats:Sw,defaultWidth:"full"}),time:Wa({formats:Cw,defaultWidth:"full"}),dateTime:Wa({formats:Ew,defaultWidth:"full"})};var Ow={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Ip=(e,t,r,o)=>Ow[e];function cn(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var Pw={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Aw={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Iw={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Vw={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Tw={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Rw={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Nw=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},Vp={ordinalNumber:Nw,era:cn({values:Pw,defaultWidth:"wide"}),quarter:cn({values:Aw,defaultWidth:"wide",argumentCallback:e=>e-1}),month:cn({values:Iw,defaultWidth:"wide"}),day:cn({values:Vw,defaultWidth:"wide"}),dayPeriod:cn({values:Tw,defaultWidth:"wide",formattingValues:Rw,defaultFormattingWidth:"wide"})};function fn(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?Dw(s,f=>f.test(a)):kw(s,f=>f.test(a)),u;u=e.valueCallback?e.valueCallback(l):l,u=r.valueCallback?r.valueCallback(u):u;let d=t.slice(a.length);return{value:u,rest:d}}}function kw(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function Dw(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var Mw=/^(\d+)(th|st|nd|rd)?/i,Fw=/\d+/i,Lw={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Bw={any:[/^b/i,/^(a|c)/i]},jw={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Hw={any:[/1/i,/2/i,/3/i,/4/i]},Ww={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},zw={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Gw={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},qw={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Yw={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Uw={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Rp={ordinalNumber:Tp({matchPattern:Mw,parsePattern:Fw,valueCallback:e=>parseInt(e,10)}),era:fn({matchPatterns:Lw,defaultMatchWidth:"wide",parsePatterns:Bw,defaultParseWidth:"any"}),quarter:fn({matchPatterns:jw,defaultMatchWidth:"wide",parsePatterns:Hw,defaultParseWidth:"any",valueCallback:e=>e+1}),month:fn({matchPatterns:Ww,defaultMatchWidth:"wide",parsePatterns:zw,defaultParseWidth:"any"}),day:fn({matchPatterns:Gw,defaultMatchWidth:"wide",parsePatterns:qw,defaultParseWidth:"any"}),dayPeriod:fn({matchPatterns:Yw,defaultMatchWidth:"any",parsePatterns:Uw,defaultParseWidth:"any"})};var Hu={code:"en-US",formatDistance:Pp,formatLong:Ap,formatRelative:Ip,localize:Vp,match:Rp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Np(e,t){let r=ge(e,t?.in);return yp(r,Ha(r))+1}function kp(e,t){let r=ge(e,t?.in),o=+To(r)-+_p(r);return Math.round(o/Fa)+1}function za(e,t){let r=ge(e,t?.in),o=r.getFullYear(),n=ao(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ke(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Ar(a,t),l=Ke(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let u=Ar(l,t);return+r>=+s?o+1:+r>=+u?o:o-1}function Dp(e,t){let r=ao(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=za(e,t),i=Ke(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Ar(i,t)}function Mp(e,t){let r=ge(e,t?.in),o=+Ar(r,t)-+Dp(r,t);return Math.round(o/Fa)+1}function ce(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Ir={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return ce(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ce(r+1,2)},d(e,t){return ce(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return ce(e.getHours()%12||12,t.length)},H(e,t){return ce(e.getHours(),t.length)},m(e,t){return ce(e.getMinutes(),t.length)},s(e,t){return ce(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ce(n,t.length)}};var dn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Wu={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Ir.y(e,t)},Y:function(e,t,r,o){let n=za(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ce(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ce(i,t.length)},R:function(e,t){let r=ja(e);return ce(r,t.length)},u:function(e,t){let r=e.getFullYear();return ce(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ce(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ce(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Ir.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return ce(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=Mp(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ce(n,t.length)},I:function(e,t,r){let o=kp(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ce(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Ir.d(e,t)},D:function(e,t,r){let o=Np(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ce(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ce(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ce(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return ce(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=dn.noon:o===0?n=dn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=dn.evening:o>=12?n=dn.afternoon:o>=4?n=dn.morning:n=dn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Ir.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Ir.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Ir.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Ir.s(e,t)},S:function(e,t){return Ir.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return Lp(o);case"XXXX":case"XX":return Ro(o);default:return Ro(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return Lp(o);case"xxxx":case"xx":return Ro(o);default:return Ro(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Fp(o,":");default:return"GMT"+Ro(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Fp(o,":");default:return"GMT"+Ro(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ce(o,t.length)},T:function(e,t,r){return ce(+e,t.length)}};function Fp(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+ce(i,2)}function Lp(e,t){return e%60===0?(e>0?"-":"+")+ce(Math.abs(e)/60,2):Ro(e,t)}function Ro(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ce(Math.trunc(o/60),2),i=ce(o%60,2);return r+n+t+i}var Bp=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},jp=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},$w=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Bp(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",Bp(o,t)).replace("{{time}}",jp(n,t))},Hp={p:jp,P:$w};var Kw=/^D+$/,Zw=/^Y+$/,Xw=["D","DD","YY","YYYY"];function Wp(e){return Kw.test(e)}function zp(e){return Zw.test(e)}function Gp(e,t,r){let o=Qw(e,t,r);if(console.warn(o),Xw.includes(e))throw new RangeError(o)}function Qw(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Jw=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,e0=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,t0=/^'([^]*?)'?$/,r0=/''/g,o0=/[a-zA-Z]/;function ii(e,t,r){let o=ao(),n=r?.locale??o.locale??Hu,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=ge(e,r?.in);if(!un(s))throw new RangeError("Invalid time value");let l=t.match(e0).map(d=>{let f=d[0];if(f==="p"||f==="P"){let m=Hp[f];return m(d,n.formatLong)}return d}).join("").match(Jw).map(d=>{if(d==="''")return{isToken:!1,value:"'"};let f=d[0];if(f==="'")return{isToken:!1,value:n0(d)};if(Wu[f])return{isToken:!0,value:d};if(f.match(o0))throw new RangeError("Format string contains an unescaped latin alphabet character `"+f+"`");return{isToken:!1,value:d}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(d=>{if(!d.isToken)return d.value;let f=d.value;(!r?.useAdditionalWeekYearTokens&&zp(f)||!r?.useAdditionalDayOfYearTokens&&Wp(f))&&Gp(f,t,String(e));let m=Wu[f[0]];return m(s,f,n.localize,u)}).join("")}function n0(e){let t=e.match(t0);return t?t[1].replace(r0,"'"):e}function No(e,t,r){return La(e,-t,r)}function Ga(e,t,r){return Ba(e,-t,r)}function qp(e,t,r){return Sp(e,-t,r)}function qa(e,t,r){return Cp(e,-t,r)}var H=c(Z(),1),Me=c(W(),1),Ct=c(ko(),1);var zu=c(T(),1),ze={Name:(0,zu.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,zu.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Up(e,t){switch(t){case"days":return No(new Date,e);case"weeks":return qp(new Date,e);case"months":return Ga(new Date,e);case"years":return qa(new Date,e);default:return new Date}}var $p={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},Ya=[{name:Ae,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Ie,...$p},{name:ct,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:ft,...$p},{name:ht,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),ze),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:bt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),ze),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Up(r.value,r.unit),n=(0,Ct.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:Pt,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),ze),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Up(r.value,r.unit);return(0,Ct.getDate)(t.getValue({item:e}))(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:Re,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Lr,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:jr,label:(0,H.__)("Less than or equal"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:Hr,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:Wr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:Gr,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:qr,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:Zt,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Xt,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Qt,label:(0,H.__)("Starts with"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Yr,label:(0,H.__)("On"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:Ur,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],Do=e=>Ya.find(t=>t.name===e),Kp=()=>Ya.map(e=>e.name),Zp=e=>Ya.filter(t=>t.selection==="single").some(t=>t.name===e),Xp=e=>Ya.some(t=>t.name===e);var at=c(T(),1),i0="Enter",a0=" ",s0=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=Do(t?.operator);return o!==void 0?o.filterText(r,e):(0,Vr.sprintf)((0,Vr.__)("Unknown status for %1$s"),r.name)};function l0({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:Do(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,at.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,at.jsx)(Yt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,at.jsx)(Yt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Vr.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,u=n?[...(t.filters??[]).map(d=>{if(d.field===e.field){let f=Do(l)?.selection,m=Do(s)?.selection,p=f!==m||[f,m].includes("custom");return{...d,value:p?void 0:d.value,operator:s}}return d})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Qp({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,Ua.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(x=>x.field===i.field),u=[],d=(0,Ua.useMemo)(()=>{let x=r.find(_=>_.id===i.field);return x&&{...x,getValue:({item:_})=>_[x.id]}},[r,i.field]),{elements:f}=pt({elements:i.elements,getElements:i.getElements});if(f.length>0)u=f.filter(x=>i.singleSelection?x.value===l?.value:l?.value?.includes(x.value));else if(Array.isArray(l?.value)){let x=l.value.map(_=>d?.getValueFormatted({item:{[d.id]:_},field:d})||String(_));u=[{value:l.value,label:x}]}else if(typeof l?.value=="object")u=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let x=d!==void 0?d.getValueFormatted({item:{[d.id]:l.value},field:d}):String(l.value);u=[{value:l.value,label:x}]}let m=i.isPrimary,p=l?.isLocked,v=!p&&l?.value!==void 0,b=!p&&(!m||v);return(0,at.jsx)(Yt.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:x,onToggle:_})=>(0,at.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,at.jsx)(Yt.Tooltip,{text:(0,Vr.sprintf)((0,Vr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,at.jsx)("div",{className:U("dataviews-filters__summary-chip",{"has-reset":b,"has-values":v,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||_()},onKeyDown:y=>{!p&&[i0,a0].includes(y.key)&&(_(),y.preventDefault())},"aria-disabled":p,"aria-pressed":x,"aria-expanded":x,ref:n,children:(0,at.jsx)(s0,{activeElements:u,filterInView:l,filter:i})})}),b&&(0,at.jsx)(Yt.Tooltip,{text:m?(0,Vr.__)("Reset"):(0,Vr.__)("Remove"),placement:"top",children:(0,at.jsx)("button",{className:U("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(y=>y.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,at.jsx)(Yt.Icon,{icon:An})})})]}),renderContent:()=>(0,at.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,at.jsx)(l0,{...o}),o.filter.hasElements?(0,at.jsx)(fp,{...o,filter:{...o.filter,elements:f}}):(0,at.jsx)(hp,{...o,fields:r})]})})}var $a=c(Y(),1),Jp=c(Z(),1),ev=c(W(),1);var Tr=c(T(),1),{Menu:ai}=J($a.privateApis);function Gu({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Tr.jsxs)(ai,{children:[(0,Tr.jsx)(ai.TriggerButton,{...n}),(0,Tr.jsx)(ai.Popover,{children:i.map(a=>(0,Tr.jsx)(ai.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Tr.jsx)(ai.ItemLabel,{children:a.name})},a.field))})]})}function u0({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Tr.jsx)(Gu,{triggerProps:{render:(0,Tr.jsx)($a.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Jp.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var tv=(0,ev.forwardRef)(u0);var rv=c(Y(),1),ov=c(Z(),1),nv=c(T(),1);function iv({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,nv.jsx)(rv.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,ov.__)("Reset")})}var av=c(W(),1);function c0(e,t){return(0,av.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>Zp(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&Xp(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var si=c0;var li=c(T(),1);function f0({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,mn.useContext)($),a=(0,mn.useRef)(null),s=si(t,r),l=(0,li.jsx)(tv,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=s.filter(f=>f.isVisible);if(u.length===0)return null;let d=[...u.map(f=>(0,li.jsx)(Qp,{filter:f,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},f.field)),l];return d.push((0,li.jsx)(iv,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,li.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:d})}var ui=(0,mn.memo)(f0);var so=c(W(),1),sv=c(Y(),1);var Ka=c(Z(),1);var sr=c(T(),1);function d0(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,so.useContext)($),a=(0,so.useRef)(null),s=(0,so.useCallback)(p=>{r(p),i(!0)},[r,i]),u=!!e.filter(p=>p.isVisible).length;if(e.length===0)return null;let d={label:(0,Ka.__)("Add filter"),"aria-expanded":!1,isPressed:!1},f={label:(0,Ka._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=(0,sr.jsx)(sv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:In,...u?f:d});return(0,sr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:u?(0,sr.jsx)(m0,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,sr.jsx)(Gu,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:m}})})}function m0({buttonRef:e,filtersCount:t,children:r}){return(0,so.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,sr.jsxs)(sr.Fragment,{children:[r,!!t&&(0,sr.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var Za=d0;var lv=c(W(),1);var uv=c(T(),1);function p0(e){let{isShowingFilter:t}=(0,lv.useContext)($);return t?(0,uv.jsx)(ui,{...e}):null}var Xa=p0;var cv=c(W(),1),fv=c(Z(),1);var qu=c(T(),1);function Yu({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,view:s,onChangeView:l,selection:u,onChangeSelection:d,setOpenedFilter:f,onClickItem:m,isItemClickable:p,renderItemLink:v,defaultLayouts:b,empty:x=(0,qu.jsx)("p",{children:(0,fv.__)("No results")})}=(0,cv.useContext)($),_=Jr.find(y=>y.type===s.type&&b[y.type])?.component;return(0,qu.jsx)(_,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,onChangeView:l,onChangeSelection:d,selection:u,setOpenedFilter:f,onClickItem:m,renderItemLink:v,isItemClickable:p,view:s,empty:x})}var dv=c(W(),1);var ci=c(T(),1),v0=[];function Uu(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=v0}=(0,dv.useContext)($),i=Go(n,o)&&[jo,Zi].includes(e.type);return!t||!r||r<=1&&!i?null:!!t&&(0,ci.jsxs)(F,{direction:"row",justify:"end",align:"center",className:"dataviews-footer",gap:"sm",children:[i&&(0,ci.jsx)(ea,{}),(0,ci.jsx)(ed,{})]})}var mv=c(Z(),1),Ut=c(W(),1),pv=c(Y(),1),vv=c(Rt(),1);var gv=c(T(),1),g0=(0,Ut.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Ut.useContext)($),[n,i,a]=(0,vv.useDebouncedInput)(r.search);(0,Ut.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,Ut.useRef)(o),l=(0,Ut.useRef)(r);(0,Ut.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,Ut.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let u=t||(0,mv.__)("Search");return(0,gv.jsx)(pv.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),$u=g0;var Oe=c(Y(),1),lo=c(Z(),1),lr=c(W(),1);var Zu=c(bv(),1),Sv=c(Rt(),1);var xv=c(Y(),1),Ku=c(Z(),1),wv=c(W(),1);var yv=c(T(),1);function _v(){let e=(0,wv.useContext)($),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,yv.jsx)(xv.ToggleControl,{label:(0,Ku.__)("Enable infinite scroll"),help:(0,Ku.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var ie=c(T(),1),{Menu:fi}=J(Oe.privateApis),h0={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function Xu(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,lr.useContext)($),o=Object.keys(r);if(o.length<=1)return null;let n=Jr.find(i=>e.type===i.type);return(0,ie.jsxs)(fi,{children:[(0,ie.jsx)(fi.TriggerButton,{render:(0,ie.jsx)(Oe.Button,{size:"compact",icon:n?.icon,label:(0,lo.__)("Layout")})}),(0,ie.jsx)(fi.Popover,{children:o.map(i=>{let a=Jr.find(s=>s.type===i);return a?(0,ie.jsx)(fi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,Zu.default)("Invalid dataview")},children:(0,ie.jsx)(fi.ItemLabel,{children:a.label})},i):null})})]})}function b0(){let{view:e,fields:t,onChangeView:r}=(0,lr.useContext)($),o=(0,lr.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,ie.jsx)(Oe.SelectControl,{__next40pxDefaultSize:!0,label:(0,lo.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function x0(){let{view:e,fields:t,onChangeView:r}=(0,lr.useContext)($);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,ie.jsx)(Oe.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,lo.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,Zu.default)("Invalid direction")},children:Ui.map(i=>(0,ie.jsx)(Oe.__experimentalToggleGroupControlOptionIcon,{value:i,icon:mf[i],label:Ki[i]},i))})}function w0(){let{view:e,config:t,onChangeView:r}=(0,lr.useContext)($),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,ie.jsx)(Oe.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,lo.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,ie.jsx)(Oe.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function y0({title:e,description:t,children:r}){return(0,ie.jsxs)(Oe.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,ie.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,ie.jsx)(Oe.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,ie.jsx)(Oe.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,ie.jsx)(Oe.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:r})]})}function Qu(){let{view:e}=(0,lr.useContext)($),t=(0,Sv.useInstanceId)(Cv,"dataviews-view-config-dropdown"),r=Jr.find(o=>o.type===e.type);return(0,ie.jsx)(Oe.Dropdown,{expandOnMobile:!0,popoverProps:{...h0,id:t},renderToggle:({onToggle:o,isOpen:n})=>(0,ie.jsx)(Oe.Button,{size:"compact",icon:il,label:(0,lo._x)("View options","View is used as a noun"),onClick:o,"aria-expanded":n?"true":"false","aria-controls":t}),renderContent:()=>(0,ie.jsx)(Oe.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,ie.jsx)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:(0,ie.jsxs)(y0,{title:(0,lo.__)("Appearance"),children:[(0,ie.jsxs)(F,{direction:"row",gap:"sm",className:"is-divided-in-two",children:[(0,ie.jsx)(b0,{}),(0,ie.jsx)(x0,{})]}),!!r?.viewConfigOptions&&(0,ie.jsx)(r.viewConfigOptions,{}),(0,ie.jsx)(_v,{}),(0,ie.jsx)(w0,{}),(0,ie.jsx)(oa,{})]})})})})}function Cv(){return(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(Xu,{}),(0,ie.jsx)(Qu,{})]})}var _0=(0,lr.memo)(Cv),Ev=_0;var Ov=c(Y(),1),Pv=c(W(),1);function we(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var Av=c(T(),1),{ValidatedCheckboxControl:S0}=J(Ov.privateApis);function Iv({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:u,isValid:d}=e,f=(0,Pv.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,Av.jsx)(S0,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:we(d,i),hidden:o,label:l,help:u,checked:a({item:r}),onChange:f})}var Qa=c(Y(),1),Vv=c(W(),1);var Ju=c(T(),1),{ValidatedComboboxControl:C0}=J(Qa.privateApis);function Tv({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:u,isValid:d}=t,f=l({item:e})??"",m=(0,Vv.useCallback)(b=>r(u({item:e,value:b??""})),[e,r,u]),{elements:p,isLoading:v}=pt({elements:t.elements,getElements:t.getElements});return v?(0,Ju.jsx)(Qa.Spinner,{}):(0,Ju.jsx)(C0,{required:!!t.isValid?.required,customValidity:we(d,n),label:i,value:f,help:a,placeholder:s,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var ts=c(Y(),1),zt=c(W(),1),es=c(Z(),1),tc=c(ko(),1);var vn=c(Y(),1),ec=c(W(),1),ur=c(Z(),1);var pn=c(T(),1),E0={[bt]:[{value:"days",label:(0,ur.__)("Days")},{value:"weeks",label:(0,ur.__)("Weeks")},{value:"months",label:(0,ur.__)("Months")},{value:"years",label:(0,ur.__)("Years")}],[Pt]:[{value:"days",label:(0,ur.__)("Days ago")},{value:"weeks",label:(0,ur.__)("Weeks ago")},{value:"months",label:(0,ur.__)("Months ago")},{value:"years",label:(0,ur.__)("Years ago")}]};function Ja({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=E0[i===bt?"inThePast":"over"],{id:s,label:l,getValue:u,setValue:d}=r,f=u({item:t}),{value:m="",unit:p=a[0].value}=f&&typeof f=="object"?f:{},v=(0,ec.useCallback)(x=>o(d({item:t,value:{value:Number(x),unit:p}})),[o,d,t,p]),b=(0,ec.useCallback)(x=>o(d({item:t,value:{value:m,unit:x}})),[o,d,t,m]);return(0,pn.jsx)(vn.BaseControl,{id:s,className:U(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,pn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,pn.jsx)(vn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:v}),(0,pn.jsx)(vn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,ur.__)("Unit"),value:p,options:a,onChange:b,hideLabelFromVision:!0})]})})}var Rv=c(ko(),1);function gn(e){if(!e)return null;let t=(0,Rv.getDate)(e);return t&&un(t)?t:null}var uo=c(T(),1),{DateCalendar:O0,ValidatedInputControl:P0}=J(ts.privateApis),A0=e=>e?typeof e=="string"?e:ii(e,"yyyy-MM-dd'T'HH:mm"):"";function I0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:u,getValue:d,isValid:f}=t,m=d({item:e}),p=typeof m=="string"?m:void 0,[v,b]=(0,zt.useState)(()=>gn(p)||new Date),x=(0,zt.useRef)(null),_=(0,zt.useRef)(),y=(0,zt.useRef)(null),E=(0,zt.useCallback)(N=>r(u({item:e,value:N})),[e,r,u]);(0,zt.useEffect)(()=>()=>{_.current&&clearTimeout(_.current)},[]);let P=(0,zt.useCallback)(N=>{let M;if(N){let V=N;if(p){let g=gn(p);g&&(V=new Date(N),V.setHours(g.getHours()),V.setMinutes(g.getMinutes()))}M=V.toISOString(),E(M),_.current&&clearTimeout(_.current)}else E(void 0);y.current=x.current&&x.current.ownerDocument.activeElement,_.current=setTimeout(()=>{x.current&&(x.current.focus(),x.current.blur(),E(M),y.current&&y.current instanceof HTMLElement&&y.current.focus())},0)},[E,p]),A=(0,zt.useCallback)(N=>{if(N){let M=new Date(N);E(M.toISOString());let V=gn(M.toISOString());V&&b(V)}else E(void 0)},[E]),{format:R}=t,D=R.weekStartsOn??(0,tc.getSettings)().l10n.startOfWeek,{timezone:{string:C}}=(0,tc.getSettings)(),S=s;return f?.required&&!n&&!o?S=`${s} (${(0,es.__)("Required")})`:!f?.required&&n&&!o&&(S=`${s} (${(0,es.__)("Optional")})`),(0,uo.jsx)(ts.BaseControl,{id:a,label:S,help:l,hideLabelFromVision:o,children:(0,uo.jsxs)(F,{direction:"column",gap:"lg",children:[(0,uo.jsx)(O0,{style:{width:"100%"},selected:p&&gn(p)||void 0,onSelect:P,month:v,onMonthChange:b,timeZone:C||void 0,weekStartsOn:D}),(0,uo.jsx)(P0,{ref:x,__next40pxDefaultSize:!0,required:!!f?.required,customValidity:we(f,i),type:"datetime-local",label:(0,es.__)("Date time"),hideLabelFromVision:!0,value:p?A0(gn(p)||void 0):"",onChange:A})]})})}function Nv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Pt?(0,uo.jsx)(Ja,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,uo.jsx)(I0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var gt=c(Y(),1),ve=c(W(),1),Ze=c(Z(),1),vt=c(ko(),1);var ye=c(T(),1),{DateCalendar:V0,DateRangeCalendar:T0}=J(gt.privateApis),R0=[{id:"today",label:(0,Ze.__)("Today"),getValue:()=>(0,vt.getDate)(null)},{id:"yesterday",label:(0,Ze.__)("Yesterday"),getValue:()=>{let e=(0,vt.getDate)(null);return No(e,1)}},{id:"past-week",label:(0,Ze.__)("Past week"),getValue:()=>{let e=(0,vt.getDate)(null);return No(e,7)}},{id:"past-month",label:(0,Ze.__)("Past month"),getValue:()=>{let e=(0,vt.getDate)(null);return Ga(e,1)}}],N0=[{id:"last-7-days",label:(0,Ze.__)("Last 7 days"),getValue:()=>{let e=(0,vt.getDate)(null);return[No(e,7),e]}},{id:"last-30-days",label:(0,Ze.__)("Last 30 days"),getValue:()=>{let e=(0,vt.getDate)(null);return[No(e,30),e]}},{id:"month-to-date",label:(0,Ze.__)("Month to date"),getValue:()=>{let e=(0,vt.getDate)(null);return[Op(e),e]}},{id:"last-year",label:(0,Ze.__)("Last year"),getValue:()=>{let e=(0,vt.getDate)(null);return[qa(e,1),e]}},{id:"year-to-date",label:(0,Ze.__)("Year to date"),getValue:()=>{let e=(0,vt.getDate)(null);return[Ha(e),e]}}],hn=e=>{if(!e)return null;let t=(0,vt.getDate)(e);return t&&un(t)?t:null},rc=e=>e?typeof e=="string"?e:ii(e,"yyyy-MM-dd"):"";function kv({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,ve.useState)(void 0),u=(0,ve.useCallback)(()=>{let f=Array.isArray(r)?r:[r];for(let m of f){let p=m.current;if(p&&!p.validity.valid){l({type:"invalid",message:p.validationMessage});return}}l(void 0)},[r]);return(0,ve.useEffect)(()=>{let f=Array.isArray(r)?r:[r],m=t?we(a,t):void 0;for(let p of f){let v=p.current;v&&v.setCustomValidity(m?.type==="invalid"&&m.message?m.message:"")}},[r,a,t]),(0,ve.useEffect)(()=>{let f=Array.isArray(r)?r:[r],m=p=>{p.preventDefault(),n(!0)};for(let p of f)p.current?.addEventListener("invalid",m);return()=>{for(let p of f)p.current?.removeEventListener("invalid",m)}},[r,n]),(0,ve.useEffect)(()=>{if(!o)return;let f=t?we(a,t):void 0;f?l(f):u()},[o,a,t,u]),(0,ye.jsxs)("div",{onBlur:f=>{o||(!f.relatedTarget||!f.currentTarget.contains(f.relatedTarget))&&n(!0)},children:[i,(0,ye.jsx)("div",{"aria-live":"polite",children:s&&(0,ye.jsxs)("p",{className:U("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,ye.jsx)(gt.Icon,{className:"components-validated-control__indicator-icon",icon:ul,size:16,fill:"currentColor"}),s.message]})})]})}function k0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:u,isValid:d,format:f}=t,[m,p]=(0,ve.useState)(null),v=f.weekStartsOn??(0,vt.getSettings)().l10n.startOfWeek,b=u({item:e}),x=typeof b=="string"?b:void 0,[_,y]=(0,ve.useState)(()=>hn(x)||new Date),[E,P]=(0,ve.useState)(!1),A=(0,ve.useRef)(null),R=(0,ve.useCallback)(V=>r(l({item:e,value:V})),[e,r,l]),D=(0,ve.useCallback)(V=>{let g=V?ii(V,"yyyy-MM-dd"):void 0;R(g),p(null),P(!0)},[R]),C=(0,ve.useCallback)(V=>{let g=V.getValue(),w=rc(g);y(g),R(w),p(V.id),P(!0)},[R]),S=(0,ve.useCallback)(V=>{if(R(V),V){let g=hn(V);g&&y(g)}p(null),P(!0)},[R]),{timezone:{string:N}}=(0,vt.getSettings)(),M=s;return d?.required&&!n?M=`${s} (${(0,Ze.__)("Required")})`:!d?.required&&n&&(M=`${s} (${(0,Ze.__)("Optional")})`),(0,ye.jsx)(kv,{field:t,validity:i,inputRefs:A,isTouched:E,setIsTouched:P,children:(0,ye.jsx)(gt.BaseControl,{id:a,className:"dataviews-controls__date",label:M,hideLabelFromVision:o,children:(0,ye.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[R0.map(V=>{let g=m===V.id;return(0,ye.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:g,size:"small",onClick:()=>C(V),children:V.label},V.id)}),(0,ye.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Ze.__)("Custom")})]}),(0,ye.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:A,type:"date",label:(0,Ze.__)("Date"),hideLabelFromVision:!0,value:x,onChange:S,required:!!t.isValid?.required}),(0,ye.jsx)(V0,{style:{width:"100%"},selected:x&&hn(x)||void 0,onSelect:D,month:_,onMonthChange:y,timeZone:N||void 0,weekStartsOn:v})]})})})}function D0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:u,format:d}=t,f,m=l({item:e});Array.isArray(m)&&m.length===2&&m.every(w=>typeof w=="string")&&(f=m);let p=d.weekStartsOn??(0,vt.getSettings)().l10n.startOfWeek,v=(0,ve.useCallback)(w=>{r(u({item:e,value:w}))},[e,r,u]),[b,x]=(0,ve.useState)(null),_=(0,ve.useMemo)(()=>{if(!f)return{from:void 0,to:void 0};let[w,I]=f;return{from:hn(w)||void 0,to:hn(I)||void 0}},[f]),[y,E]=(0,ve.useState)(()=>_.from||new Date),[P,A]=(0,ve.useState)(!1),R=(0,ve.useRef)(null),D=(0,ve.useRef)(null),C=(0,ve.useCallback)((w,I)=>{w&&I?v([rc(w),rc(I)]):!w&&!I&&v(void 0)},[v]),S=(0,ve.useCallback)(w=>{C(w?.from,w?.to),x(null),A(!0)},[C]),N=(0,ve.useCallback)(w=>{let[I,h]=w.getValue();E(I),C(I,h),x(w.id),A(!0)},[C]),M=(0,ve.useCallback)((w,I)=>{let[h,k]=f||[void 0,void 0];if(C(w==="from"?I:h,w==="to"?I:k),I){let G=hn(I);G&&E(G)}x(null),A(!0)},[f,C]),{timezone:V}=(0,vt.getSettings)(),g=s;return t.isValid?.required&&!n?g=`${s} (${(0,Ze.__)("Required")})`:!t.isValid?.required&&n&&(g=`${s} (${(0,Ze.__)("Optional")})`),(0,ye.jsx)(kv,{field:t,validity:i,inputRefs:[R,D],isTouched:P,setIsTouched:A,children:(0,ye.jsx)(gt.BaseControl,{id:a,className:"dataviews-controls__date",label:g,hideLabelFromVision:o,children:(0,ye.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[N0.map(w=>{let I=b===w.id;return(0,ye.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:I,size:"small",onClick:()=>N(w),children:w.label},w.id)}),(0,ye.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!b,size:"small",accessibleWhenDisabled:!1,disabled:!!b,children:(0,Ze.__)("Custom")})]}),(0,ye.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ye.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:R,type:"date",label:(0,Ze.__)("From"),hideLabelFromVision:!0,value:f?.[0],onChange:w=>M("from",w),required:!!t.isValid?.required}),(0,ye.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,Ze.__)("To"),hideLabelFromVision:!0,value:f?.[1],onChange:w=>M("to",w),required:!!t.isValid?.required})]}),(0,ye.jsx)(T0,{style:{width:"100%"},selected:_,onSelect:S,month:y,onMonthChange:E,timeZone:V.string||void 0,weekStartsOn:p})]})})})}function Dv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Pt?(0,ye.jsx)(Ja,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===ht?(0,ye.jsx)(D0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ye.jsx)(k0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var os=c(Y(),1);var Mv=c(Y(),1),Fv=c(W(),1);var Lv=c(T(),1),{ValidatedInputControl:M0}=J(Mv.privateApis);function cr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:u,placeholder:d,description:f,getValue:m,setValue:p,isValid:v}=t,b=m({item:e}),x=(0,Fv.useCallback)(_=>r(p({item:e,value:_})),[e,p,r]);return(0,Lv.jsx)(M0,{required:!!v.required,markWhenOptional:n,customValidity:we(v,l),label:u,placeholder:d,value:b??"",help:f,onChange:x,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:v.pattern?v.pattern.constraint:void 0,minLength:v.minLength?v.minLength.constraint:void 0,maxLength:v.maxLength?v.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var rs=c(T(),1);function Bv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,rs.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,rs.jsx)(os.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,rs.jsx)(os.Icon,{icon:sl})})})}var is=c(Y(),1);var ns=c(T(),1);function jv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ns.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,ns.jsx)(is.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ns.jsx)(is.Icon,{icon:bl})})})}var ss=c(Y(),1);var as=c(T(),1);function Hv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,as.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,as.jsx)(ss.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,as.jsx)(ss.Icon,{icon:gl})})})}var Rr=c(Y(),1),di=c(W(),1),ls=c(Z(),1);var co=c(T(),1),{ValidatedNumberControl:F0}=J(Rr.privateApis);function Wv(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function L0({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,di.useCallback)(l=>t([Wv(l),i]),[t,i]),s=(0,di.useCallback)(l=>t([n,Wv(l)]),[t,n]);return(0,co.jsx)(Rr.BaseControl,{help:(0,ls.__)("The max. value must be greater than the min. value."),children:(0,co.jsxs)(Rr.Flex,{direction:"row",gap:4,children:[(0,co.jsx)(Rr.__experimentalNumberControl,{label:(0,ls.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,co.jsx)(Rr.__experimentalNumberControl,{label:(0,ls.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function us({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:u,description:d,getValue:f,setValue:m,isValid:p}=t,v=f({item:e})??"",b=(0,di.useCallback)(_=>{r(m({item:e,value:["",void 0].includes(_)?void 0:Number(_)}))},[e,r,m]),x=(0,di.useCallback)(_=>{r(m({item:e,value:_}))},[e,r,m]);if(i===ht){let _=["",""];return Array.isArray(v)&&v.length===2&&v.every(y=>typeof y=="number"||y==="")&&(_=v),(0,co.jsx)(L0,{value:_,onChange:x,hideLabelFromVision:o,step:l})}return(0,co.jsx)(F0,{required:!!p.required,markWhenOptional:n,customValidity:we(p,a),label:u,help:d,value:v,onChange:b,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var zv=c(T(),1);function Gv(e){return(0,zv.jsx)(us,{...e})}var qv=c(T(),1);function Yv(e){return(0,qv.jsx)(us,{...e})}var cs=c(Y(),1),Uv=c(W(),1);var oc=c(T(),1),{ValidatedRadioControl:B0}=J(cs.privateApis);function $v({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:d}=t,{elements:f,isLoading:m}=pt({elements:t.elements,getElements:t.getElements}),p=l({item:e}),v=(0,Uv.useCallback)(b=>r(u({item:e,value:b})),[e,r,u]);return m?(0,oc.jsx)(cs.Spinner,{}):(0,oc.jsx)(B0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(d,i),label:a,help:s,onChange:v,options:f,selected:p,hideLabelFromVision:o})}var fs=c(Y(),1),Kv=c(W(),1);var nc=c(T(),1),{ValidatedSelectControl:j0}=J(fs.privateApis);function Zv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:u,setValue:d,isValid:f}=t,m=a==="array",p=u({item:e})??(m?[]:""),v=(0,Kv.useCallback)(_=>r(d({item:e,value:_})),[e,r,d]),{elements:b,isLoading:x}=pt({elements:t.elements,getElements:t.getElements});return x?(0,nc.jsx)(fs.Spinner,{}):(0,nc.jsx)(j0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(f,i),label:s,value:p,help:l,options:b,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var ic=c(W(),1);var Xv=c(T(),1);function Qv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,Xv.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,ic.createElement)(s):void 0,suffix:l?(0,ic.createElement)(l):void 0})}var Jv=c(Y(),1),eg=c(W(),1);var tg=c(T(),1),{ValidatedToggleControl:H0}=J(Jv.privateApis);function rg({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:d}=e,f=(0,eg.useCallback)(()=>{t(u({item:r,value:!l({item:r})}))},[t,u,r,l]);return(0,tg.jsx)(H0,{required:!!d.required,markWhenOptional:n,customValidity:we(d,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:f})}var og=c(Y(),1),ng=c(W(),1);var ig=c(T(),1),{ValidatedTextareaControl:W0}=J(og.privateApis);function ag({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:u,description:d,setValue:f,isValid:m}=t,p=t.getValue({item:e}),v=(0,ng.useCallback)(b=>r(f({item:e,value:b})),[e,r,f]);return(0,ig.jsx)(W0,{required:!!m.required,markWhenOptional:n,customValidity:we(m,a),label:l,placeholder:u,value:p??"",help:d,onChange:v,rows:s,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var bn=c(Y(),1),sg=c(W(),1);var ds=c(T(),1),{ValidatedToggleGroupControl:z0}=J(bn.privateApis);function lg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,u=a({item:e}),d=(0,sg.useCallback)(v=>r(s({item:e,value:v})),[e,r,s]),{elements:f,isLoading:m}=pt({elements:t.elements,getElements:t.getElements});if(m)return(0,ds.jsx)(bn.Spinner,{});if(f.length===0)return null;let p=f.find(v=>v.value===u);return(0,ds.jsx)(z0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:d,value:u,hideLabelFromVision:o,children:f.map(v=>(0,ds.jsx)(bn.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var ms=c(Y(),1),ps=c(W(),1);var mi=c(T(),1),{ValidatedFormTokenField:G0}=J(ms.privateApis);function ug({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:u,isValid:d}=t,f=l({item:e}),{elements:m,isLoading:p}=pt({elements:t.elements,getElements:t.getElements}),v=(0,ps.useMemo)(()=>Array.isArray(f)?f.map(x=>m?.find(y=>y.value===x)||{value:x,label:x}):[],[f,m]),b=(0,ps.useCallback)(x=>{let _=x.map(y=>typeof y=="object"&&"value"in y?y.value:y);r(u({item:e,value:_}))},[r,u,e]);return p?(0,mi.jsx)(ms.Spinner,{}):(0,mi.jsx)(G0,{required:!!d?.required,markWhenOptional:n,customValidity:we(d,i),label:o?void 0:a,value:v,onChange:b,placeholder:s,suggestions:m?.map(x=>x.value),__experimentalValidateInput:x=>t.isValid?.elements&&m?m.some(_=>_.value===x||_.label===x):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:x=>typeof x=="object"&&"label"in x?x.label:typeof x=="string"&&m&&m.find(y=>y.value===x)?.label||x,__experimentalRenderItem:({item:x})=>{if(typeof x=="string"&&m){let _=m.find(y=>y.value===x);return(0,mi.jsx)("span",{children:_?.label||x})}return(0,mi.jsx)("span",{children:x})}})}var q0={grad:.9,turn:360,rad:360/(2*Math.PI)},Nr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},tt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},Gt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},bg=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},cg=function(e){return{r:Gt(e.r,0,255),g:Gt(e.g,0,255),b:Gt(e.b,0,255),a:Gt(e.a)}},ac=function(e){return{r:tt(e.r),g:tt(e.g),b:tt(e.b),a:tt(e.a,3)}},Y0=/^#([0-9a-f]{3,8})$/i,vs=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},xg=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},wg=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),u=i%6;return{r:255*[o,s,a,a,l,o][u],g:255*[l,o,o,s,a,a][u],b:255*[a,a,l,o,o,s][u],a:n}},fg=function(e){return{h:bg(e.h),s:Gt(e.s,0,100),l:Gt(e.l,0,100),a:Gt(e.a)}},dg=function(e){return{h:tt(e.h),s:tt(e.s),l:tt(e.l),a:tt(e.a,3)}},mg=function(e){return wg((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},pi=function(e){return{h:(t=xg(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},U0=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$0=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,K0=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Z0=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,pg={string:[[function(e){var t=Y0.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?tt(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?tt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=K0.exec(e)||Z0.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:cg({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=U0.exec(e)||$0.exec(e);if(!t)return null;var r,o,n=fg({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(q0[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return mg(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return Nr(t)&&Nr(r)&&Nr(o)?cg({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!Nr(t)||!Nr(r)||!Nr(o))return null;var a=fg({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return mg(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Nr(t)||!Nr(r)||!Nr(o))return null;var a=(function(s){return{h:bg(s.h),s:Gt(s.s,0,100),v:Gt(s.v,0,100),a:Gt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return wg(a)},"hsv"]]},vg=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=ac(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?vs(tt(255*i)):"","#"+vs(r)+vs(o)+vs(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return ac(this.rgba)},e.prototype.toRgbString=function(){return t=ac(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return dg(pi(this.rgba))},e.prototype.toHslString=function(){return t=dg(pi(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=xg(this.rgba),{h:tt(t.h),s:tt(t.s),v:tt(t.v),a:tt(t.a,3)};var t},e.prototype.invert=function(){return st({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),st(sc(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),st(sc(this.rgba,-t))},e.prototype.grayscale=function(){return st(sc(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),st(gg(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),st(gg(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"?st({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):tt(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=pi(this.rgba);return typeof t=="number"?st({h:t,s:r.s,l:r.l,a:r.a}):tt(r.h)},e.prototype.isEqual=function(t){return this.toHex()===st(t).toHex()},e})(),st=function(e){return e instanceof hg?e:new hg(e)};var xn=c(Y(),1),uc=c(W(),1);var fo=c(T(),1),{ValidatedInputControl:Q0,Picker:J0}=J(xn.privateApis),ey=({color:e,onColorChange:t})=>{let r=e&&st(e).isValid()?e:"#ffffff";return(0,fo.jsx)(xn.Dropdown,{renderToggle:({onToggle:o,isOpen:n})=>(0,fo.jsx)(xn.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,fo.jsx)("button",{type:"button",onClick:o,style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",cursor:"pointer",outline:n?"2px solid #007cba":"none",outlineOffset:"2px",display:"flex",alignItems:"center",justifyContent:"center",padding:0,margin:0},"aria-label":"Open color picker"})}),renderContent:()=>(0,fo.jsx)("div",{style:{padding:"16px"},children:(0,fo.jsx)(J0,{color:st(r),onChange:t,enableAlpha:!0})})})};function yg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:u,isValid:d}=t,f=t.getValue({item:e})||"",m=(0,uc.useCallback)(v=>{r(u({item:e,value:v.toHex()}))},[e,r,u]),p=(0,uc.useCallback)(v=>{r(u({item:e,value:v||""}))},[e,r,u]);return(0,fo.jsx)(Q0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(d,i),label:a,placeholder:s,value:f,help:l,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,fo.jsx)(ey,{color:f,onColorChange:m})})}var hs=c(Y(),1),bs=c(W(),1),cc=c(Z(),1);var gs=c(T(),1);function _g({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,bs.useState)(!1),l=(0,bs.useCallback)(()=>{s(u=>!u)},[]);return(0,gs.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,gs.jsx)(hs.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,gs.jsx)(hs.Button,{icon:a?Tn:Il,onClick:l,size:"small",label:a?(0,cc.__)("Hide password"):(0,cc.__)("Show password")})})})}function xs(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var Cg=c(T(),1),Sg={array:ug,checkbox:Iv,color:yg,combobox:Tv,datetime:Nv,date:Dv,email:Bv,telephone:jv,url:Hv,integer:Gv,number:Yv,password:_g,radio:$v,select:Zv,text:Qv,toggle:rg,textarea:ag,toggleGroup:lg};function ty(e){return e&&typeof e=="object"&&typeof e.control=="string"}function ry(e){let{control:t,...r}=e,o=ws(t);return o===null?null:function(i){return(0,Cg.jsx)(o,{...i,config:r})}}function Eg(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?ws(e.Edit):ty(e.Edit)?ry(e.Edit):xs(e)&&e.type!=="array"?ws("select"):t===null?null:ws(t)}function ws(e){return Object.keys(Sg).includes(e)?Sg[e]:null}function oy(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var Og=oy;var ny=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Pg=ny;var iy=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},Ag=iy;var Vg=c(Z(),1);function ys({item:e,field:t}){let{elements:r,isLoading:o}=pt({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var Ig=c(T(),1);function Fe({item:e,field:t}){return t.hasElements?(0,Ig.jsx)(ys,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var fr=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function Le(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function dr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function mr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function pr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Ce(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function ay({item:e,field:t}){return t.getValue({item:e})}var Et=ay;var sy=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function ly(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!sy.test(r)?(0,Vg.__)("Value must be a valid email address."):null}var Tg={type:"email",render:Fe,Edit:"email",sort:fr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Te,Re,Zt,Xt,Qt,Ae,Ie,ct,ft],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:dr,maxLength:mr,elements:Ce,custom:ly}};var Rg=c(Z(),1);var wn=(e,t,r)=>r==="asc"?e-t:t-e;function _s(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function Ss(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var Ng={separatorThousand:","};function uy({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=Ng:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function cy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Rg.__)("Value must be an integer."):null}var kg={type:"integer",render:Fe,Edit:"integer",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re,Lr,Br,jr,Hr,ht],validOperators:[Te,Re,Lr,Br,jr,Hr,ht,Ae,Ie,ct,ft],format:Ng,getValueFormatted:uy,validate:{required:Le,min:_s,max:Ss,elements:Ce,custom:cy}};var Dg=c(Z(),1);var Mg={separatorThousand:",",separatorDecimal:".",decimals:2};function fy({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=Mg:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,u]=s.split("."),d=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?d:d+i+u}function dy(e){return e===""||e===void 0||e===null}function my(e,t){let r=t.getValue({item:e});return!dy(r)&&!Number.isFinite(r)?(0,Dg.__)("Value must be a number."):null}var Fg={type:"number",render:Fe,Edit:"number",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re,Lr,Br,jr,Hr,ht],validOperators:[Te,Re,Lr,Br,jr,Hr,ht,Ae,Ie,ct,ft],format:Mg,getValueFormatted:fy,validate:{required:Le,min:_s,max:Ss,elements:Ce,custom:my}};var Lg={type:"text",render:Fe,Edit:"text",sort:fr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Te,Re,Zt,Xt,Qt,Ae,Ie,ct,ft],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:dr,maxLength:mr,elements:Ce}};var Mo=c(ko(),1);var Bg={datetime:(0,Mo.getSettings)().formats.datetime,weekStartsOn:(0,Mo.getSettings)().l10n.startOfWeek};function py({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=Bg:o=t.format,(0,Mo.dateI18n)(o.datetime,(0,Mo.getDate)(r))}var vy=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},jg={type:"datetime",render:Fe,Edit:"datetime",sort:vy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Yr,Ur,Wr,zr,Gr,qr,bt,Pt],validOperators:[Yr,Ur,Wr,zr,Gr,qr,bt,Pt],format:Bg,getValueFormatted:py,validate:{required:Le,elements:Ce}};var Fo=c(ko(),1);var Hg={date:(0,Fo.getSettings)().formats.date,weekStartsOn:(0,Fo.getSettings)().l10n.startOfWeek};function gy({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Hg:o=t.format,(0,Fo.dateI18n)(o.date,(0,Fo.getDate)(r))}var hy=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Wg={type:"date",render:Fe,Edit:"date",sort:hy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Yr,Ur,Wr,zr,Gr,qr,bt,Pt,ht],validOperators:[Yr,Ur,Wr,zr,Gr,qr,bt,Pt,ht],format:Hg,getValueFormatted:gy,validate:{required:Le,elements:Ce}};var Cs=c(Z(),1);function zg(e,t){return t.getValue({item:e})===!0}function by({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,Cs.__)("True"):r===!1?(0,Cs.__)("False"):""}function xy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,Cs.__)("Value must be true, false, or undefined"):null}var wy=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},Gg={type:"boolean",render:Fe,Edit:"checkbox",sort:wy,validate:{required:zg,elements:Ce,custom:xy},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re],validOperators:[Te,Re],format:{},getValueFormatted:by};var qg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Et,validate:{}};var fc=c(Z(),1);function Yg(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Ug({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function yy({item:e,field:t}){return Ug({item:e,field:t})}function _y(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,fc.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,fc.__)("Every value must be a string.")}var Sy=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},$g={type:"array",render:yy,Edit:"array",sort:Sy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Ae,Ie,ct,ft],format:{},getValueFormatted:Ug,validate:{required:Yg,elements:Ce,custom:_y}};function Cy({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Kg={type:"password",render:Fe,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Cy,validate:{required:Le,pattern:pr,minLength:dr,maxLength:mr,elements:Ce}};var Zg={type:"telephone",render:Fe,Edit:"telephone",sort:fr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Te,Re,Zt,Xt,Qt,Ae,Ie,ct,ft],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:dr,maxLength:mr,elements:Ce}};var Xg=c(Z(),1);var yn=c(T(),1);function Ey({item:e,field:t}){if(t.hasElements)return(0,yn.jsx)(ys,{item:e,field:t});let r=Et({item:e,field:t});return!r||!st(r).isValid()?r:(0,yn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,yn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,yn.jsx)("span",{children:r})]})}function Oy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!st(r).isValid()?(0,Xg.__)("Value must be a valid color."):null}var Py=(e,t,r)=>{let o=st(e),n=st(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},Qg={type:"color",render:Ey,Edit:"color",sort:Py,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Te,Re,Ae,Ie],format:{},getValueFormatted:Et,validate:{required:Le,elements:Ce,custom:Oy}};var Jg={type:"url",render:Fe,Edit:"url",sort:fr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Te,Re,Zt,Xt,Qt,Ae,Ie,ct,ft],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:dr,maxLength:mr,elements:Ce}};var Ay=(e,t,r)=>typeof e=="number"&&typeof t=="number"?wn(e,t,r):fr(e,t,r),eh={render:Fe,Edit:null,sort:Ay,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re],validOperators:Kp(),format:{},getValueFormatted:Et,validate:{required:Le,elements:Ce}};function th(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let u=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:u}}function rh(e){return e.validOperators.reduce((t,r)=>{let o=Do(r);return o?.filter&&(t[r]=o.filter),t},{})}function Iy(e,t){return{...t.format,...e.format}}var oh=Iy;function Vy(e){let t=[Tg,kg,Fg,Lg,jg,Wg,Gg,qg,$g,Kg,Zg,Qg,Jg].find(r=>r?.type===e);return t||eh}function nh(e){return e.map(t=>{let r=Vy(t.type),o=t.getValue||Pg(t.id),n=function(i,a,s){let l=o({item:i}),u=o({item:a});return t.sort?t.sort(l,u,s):r.sort(l,u,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||Ag(t.id),elements:t.elements,getElements:t.getElements,hasElements:xs(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:Eg(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:th(t,r),filterBy:Og(t,r.defaultOperators,r.validOperators),filter:rh(r),format:oh(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var lt=c(T(),1),Ty=e=>e.id,Ry=()=>!0,Ny=[],ky=Jr.filter(e=>!e.isPicker);function Dy({header:e,search:t=!0,searchLabel:r=void 0}){return(0,lt.jsxs)(lt.Fragment,{children:[(0,lt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,lt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,lt.jsx)($u,{label:r}),(0,lt.jsx)(Za,{})]}),(0,lt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,lt.jsx)(Ev,{}),e]})]}),(0,lt.jsx)(Xa,{className:"dataviews-filters__container"}),(0,lt.jsx)(Yu,{}),(0,lt.jsx)(Uu,{})]})}function My({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=Ny,data:a,getItemId:s=Ty,getItemLevel:l,isLoading:u=!1,paginationInfo:d,defaultLayouts:f,selection:m,onChangeSelection:p,onClickItem:v,renderItemLink:b,isItemClickable:x=Ry,header:_,children:y,config:E={perPageSizes:[10,20,50,100]},empty:P}){let{infiniteScrollHandler:A}=d,R=(0,Ot.useRef)(null),[D,C]=(0,Ot.useState)(0),S=(0,Es.useResizeObserver)(de=>{C(de[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[N,M]=(0,Ot.useState)([]),V=m===void 0||p===void 0,g=V?N:m,[w,I]=(0,Ot.useState)(null);function h(de){let Pe=typeof de=="function"?de(g):de;V&&M(Pe),p&&p(Pe)}let k=(0,Ot.useMemo)(()=>nh(r),[r]),j=(0,Ot.useMemo)(()=>g.filter(de=>a.some(Pe=>s(Pe)===de)),[g,a,s]),O=si(k,e),G=(0,Ot.useMemo)(()=>(O||[]).some(de=>de.isPrimary||de.isLocked),[O]),[K,Xe]=(0,Ot.useState)(G);(0,Ot.useEffect)(()=>{G&&!K&&Xe(!0)},[G,K]),(0,Ot.useEffect)(()=>{if(!e.infiniteScrollEnabled||!R.current)return;let de=(0,Es.throttle)(q=>{let Ve=q.target,Qe=Ve.scrollTop,qt=Ve.scrollHeight,kr=Ve.clientHeight;Qe+kr>=qt-100&&A?.()},100),Pe=R.current;return Pe.addEventListener("scroll",de),()=>{Pe.removeEventListener("scroll",de),de.cancel()}},[A,e.infiniteScrollEnabled]);let rt=(0,Ot.useMemo)(()=>Object.fromEntries(Object.entries(f).filter(([de])=>ky.some(Pe=>Pe.type===de))),[f]);return rt[e.type]?(0,lt.jsx)($.Provider,{value:{view:e,onChangeView:t,fields:k,actions:i,data:a,isLoading:u,paginationInfo:d,selection:j,onChangeSelection:h,openedFilter:w,setOpenedFilter:I,getItemId:s,getItemLevel:l,isItemClickable:x,onClickItem:v,renderItemLink:b,containerWidth:D,containerRef:R,resizeObserverRef:S,defaultLayouts:rt,filters:O,isShowingFilter:K,setIsShowingFilter:Xe,config:E,empty:P,hasInfiniteScrollHandler:!!A},children:(0,lt.jsx)("div",{className:"dataviews-wrapper",ref:R,children:y??(0,lt.jsx)(Dy,{header:_,search:o,searchLabel:n})})}):null}var $t=My;$t.BulkActionToolbar=ea;$t.Filters=ui;$t.FiltersToggled=Xa;$t.FiltersToggle=Za;$t.Layout=Yu;$t.LayoutSwitcher=Xu;$t.Pagination=Kl;$t.Search=$u;$t.ViewConfig=Qu;$t.Footer=Uu;var dc=$t;var gc=c(Y()),hh=c(ah());var sh=c(Tl()),{lock:DF,unlock:mc}=(0,sh.__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 Fy={type:"list",sort:{field:"date",direction:"desc"},titleField:"title"};function lh(){return Fy}var uh=c(Z());import{useNavigate as Ly}from"@wordpress/route";function ch(){let e=Ly();return{id:"edit",label:(0,uh.__)("Edit"),isPrimary:!0,icon:_l,callback:t=>{let r=t[0];e({to:`/navigation/edit/${r.id}`})},isEligible(t){return t.type==="wp_navigation"&&String(t.status)!=="trash"}}}var pc=c(W()),vr=c(Z()),mh=c(Ts()),ph=c(dh()),vc=c(br()),Kt=c(Y());import{useNavigate as By}from"@wordpress/route";var jy="wp_navigation",vh=({closeModal:e})=>{let[t,r]=(0,pc.useState)(""),[o,n]=(0,pc.useState)(!1),i=By(),{saveEntityRecord:a}=(0,vc.useDispatch)(mh.store),{createSuccessNotice:s,createErrorNotice:l}=(0,vc.useDispatch)(ph.store),u=async()=>{if(!t||!t.trim())return;let d=t.trim();n(!0);try{let f=await a("postType",jy,{title:d,status:"publish"},{throwOnError:!0});f&&(s((0,vr.__)("Navigation menu created successfully."),{type:"snackbar"}),i({to:`/navigation/edit/${encodeURIComponent(f.id)}`}))}catch(f){let m=f instanceof Error?f.message:"Unknown error";l((0,vr.sprintf)((0,vr.__)("Unable to create navigation menu: %s"),m),{type:"snackbar"})}n(!1),e?.()};return React.createElement(Kt.Modal,{title:(0,vr.__)("Add New Navigation Menu"),onRequestClose:()=>e?.(),focusOnMount:"firstContentElement",size:"small"},React.createElement("form",{onSubmit:d=>{d.preventDefault(),u()}},React.createElement(Kt.__experimentalVStack,{spacing:4},React.createElement(Kt.TextControl,{autoComplete:"off",value:t,onChange:r,label:(0,vr.__)("Name"),placeholder:(0,vr.__)("Enter menu name"),disabled:o}),React.createElement(Kt.__experimentalHStack,{justify:"right",spacing:2},React.createElement(Kt.Button,{variant:"tertiary",onClick:e,disabled:o,accessibleWhenDisabled:!0},(0,vr.__)("Cancel")),React.createElement(Kt.Button,{variant:"primary",type:"submit","aria-busy":o,disabled:o||!t?.trim(),accessibleWhenDisabled:!0},(0,vr.__)("Create Menu"))))))};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4cd54e4f28']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4cd54e4f28"),e.appendChild(document.createTextNode("")),document.head.appendChild(e)}var{useEntityRecordsWithPermissions:zy}=mc(gh.privateApis),{usePostActions:Gy,usePostFields:qy}=mc(hh.privateApis),Os="wp_navigation",Yy={per_page:100,status:["publish","draft"],order:"desc",orderby:"date"};function Uy(e){return e.id.toString()}function $y(){let e=Hy(),t=Wy({from:"/navigation/list"}),r=(0,mo.useMemo)(()=>lh(),[]),o=(0,mo.useCallback)(P=>{e({search:{...t,...P}})},[t,e]),{view:n,updateView:i,isModified:a,resetToDefault:s}=Fs({kind:"postType",name:Os,slug:"default-new",defaultView:r,queryParams:t,onChangeQueryParams:o}),{records:l,totalItems:u,totalPages:d,isResolving:f}=zy("postType",Os,Yy),m=qy({postType:Os}),[p,v]=(0,mo.useState)(!1),b=ch(),x=Gy({postType:Os,context:"list"}),_=(0,mo.useMemo)(()=>[b,...x?.flatMap(P=>P.id==="view-post-revisions"?[]:[P])??[]],[b,x]),y=(t.ids??[]).map(P=>P.toString())??[],E=(0,mo.useMemo)(()=>l&&l.length>0?l[0].id.toString():null,[l]);return y.length===0&&E&&y.push(E),n.type==="list"&&y.splice(1),React.createElement(React.Fragment,null,React.createElement(Rs,{title:(0,Ps.__)("Navigation"),className:"navigation-page",hasPadding:!1,actions:React.createElement(React.Fragment,null,a&&React.createElement(gc.Button,{variant:"tertiary",size:"compact",onClick:s},(0,Ps.__)("Reset view")),React.createElement(gc.Button,{variant:"primary",size:"compact",onClick:()=>v(!0)},(0,Ps.__)("Add New")))},React.createElement(dc,{data:l,fields:m,view:n,onChangeView:i,isLoading:f||!m,actions:_,paginationInfo:{totalItems:u,totalPages:d},defaultLayouts:{list:{}},getItemId:Uy,selection:y,onChangeSelection:P=>{e({search:{...t,ids:P.length>0?P.map(A=>Number(A)):void 0}})}})),p&&React.createElement(vh,{closeModal:()=>v(!1)}))}var Ky=$y;export{Ky 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. + *) +*/ diff --git a/src/wp-includes/build/routes/navigation-list/route.js b/src/wp-includes/build/routes/navigation-list/route.js new file mode 100644 index 0000000000000..90057b2651ba4 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/route.js @@ -0,0 +1,105 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/navigation-list/route.ts +var import_data = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_i18n = __toESM(require_i18n()); +var NAVIGATION_POST_TYPE = "wp_navigation"; +var PRELOADED_NAVIGATION_MENUS_QUERY = { + per_page: -1, + status: ["publish", "draft"], + order: "desc", + orderby: "date" +}; +var route = { + title: () => (0, import_i18n.__)("Navigation"), + canvas: async ({ + search + }) => { + const [firstNavigation] = await (0, import_data.resolveSelect)( + import_core_data.store + ).getEntityRecords( + "postType", + NAVIGATION_POST_TYPE, + PRELOADED_NAVIGATION_MENUS_QUERY + ); + if (!firstNavigation) { + return { postType: NAVIGATION_POST_TYPE, isPreview: true }; + } + const postId = search.ids ? parseInt(search.ids[0]) : firstNavigation.id; + return { + postType: NAVIGATION_POST_TYPE, + postId, + isPreview: true, + editLink: `/types/wp_navigation/edit/${postId}` + }; + }, + loader: async () => { + await Promise.all([ + // Preload navigation menus + (0, import_data.resolveSelect)(import_core_data.store).getEntityRecords( + "postType", + NAVIGATION_POST_TYPE, + PRELOADED_NAVIGATION_MENUS_QUERY + ), + (0, import_data.resolveSelect)(import_core_data.store).canUser("create", { + kind: "postType", + name: NAVIGATION_POST_TYPE + }), + // Preload post type object (what usePostFields needs) + (0, import_data.resolveSelect)(import_core_data.store).getPostType(NAVIGATION_POST_TYPE), + // Preload users data (what usePostFields needs for author field) + (0, import_data.resolveSelect)(import_core_data.store).getEntityRecords("root", "user", { + per_page: -1 + }) + ]); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/navigation-list/route.min.asset.php b/src/wp-includes/build/routes/navigation-list/route.min.asset.php new file mode 100644 index 0000000000000..a87001a3800b0 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-i18n'), 'version' => '8f17b624b7cbd80b2078'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/navigation-list/route.min.js b/src/wp-includes/build/routes/navigation-list/route.min.js new file mode 100644 index 0000000000000..1adfef1cb85d3 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/route.min.js @@ -0,0 +1 @@ +var E=Object.create;var c=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var I=(e,t,r,d)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of N(t))!f.call(e,a)&&a!==r&&c(e,a,{get:()=>t[a],enumerable:!(d=l(t,a))||d.enumerable});return e};var n=(e,t,r)=>(r=e!=null?E(P(e)):{},I(t||!e||!e.__esModule?c(r,"default",{value:e,enumerable:!0}):r,e));var g=p((R,w)=>{w.exports=window.wp.data});var _=p((x,y)=>{y.exports=window.wp.coreData});var m=p((O,T)=>{T.exports=window.wp.i18n});var s=n(g()),i=n(_()),v=n(m()),o="wp_navigation",u={per_page:-1,status:["publish","draft"],order:"desc",orderby:"date"},S={title:()=>(0,v.__)("Navigation"),canvas:async({search:e})=>{let[t]=await(0,s.resolveSelect)(i.store).getEntityRecords("postType",o,u);if(!t)return{postType:o,isPreview:!0};let r=e.ids?parseInt(e.ids[0]):t.id;return{postType:o,postId:r,isPreview:!0,editLink:`/types/wp_navigation/edit/${r}`}},loader:async()=>{await Promise.all([(0,s.resolveSelect)(i.store).getEntityRecords("postType",o,u),(0,s.resolveSelect)(i.store).canUser("create",{kind:"postType",name:o}),(0,s.resolveSelect)(i.store).getPostType(o),(0,s.resolveSelect)(i.store).getEntityRecords("root","user",{per_page:-1})])}};export{S as route}; diff --git a/src/wp-includes/build/routes/navigation/route.js b/src/wp-includes/build/routes/navigation/route.js new file mode 100644 index 0000000000000..055c33d9898f5 --- /dev/null +++ b/src/wp-includes/build/routes/navigation/route.js @@ -0,0 +1,10 @@ +// routes/navigation/route.ts +import { redirect } from "@wordpress/route"; +var route = { + beforeLoad: () => { + throw redirect({ to: "/navigation/list" }); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/navigation/route.min.asset.php b/src/wp-includes/build/routes/navigation/route.min.asset.php new file mode 100644 index 0000000000000..4daf5219746e2 --- /dev/null +++ b/src/wp-includes/build/routes/navigation/route.min.asset.php @@ -0,0 +1 @@ + array(), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '5b48b1ef7d48927a4d20'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/navigation/route.min.js b/src/wp-includes/build/routes/navigation/route.min.js new file mode 100644 index 0000000000000..416aa740e19ac --- /dev/null +++ b/src/wp-includes/build/routes/navigation/route.min.js @@ -0,0 +1 @@ +import{redirect as o}from"@wordpress/route";var r={beforeLoad:()=>{throw o({to:"/navigation/list"})}};export{r as route}; diff --git a/src/wp-includes/build/routes/pattern-list/content.js b/src/wp-includes/build/routes/pattern-list/content.js new file mode 100644 index 0000000000000..71c269a3f6513 --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/content.js @@ -0,0 +1,17673 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// vendor-external:react +var require_react = __commonJS({ + "vendor-external:react"(exports, module) { + module.exports = window.React; + } +}); + +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + +// 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(subscribe2, getSnapshot) { + didWarnOld18Alpha || void 0 === React9.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 = useState23({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect2( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe2, value, getSnapshot] + ); + useEffect17( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe2(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe2] + ); + useDebugValue(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(subscribe2, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React9 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState23 = React9.useState, useEffect17 = React9.useEffect, useLayoutEffect2 = React9.useLayoutEffect, useDebugValue = React9.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 !== React9.useSyncExternalStore ? React9.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(); + } + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; + } +}); + +// package-external:@wordpress/keycodes +var require_keycodes = __commonJS({ + "package-external:@wordpress/keycodes"(exports, module) { + module.exports = window.wp.keycodes; + } +}); + +// node_modules/remove-accents/index.js +var require_remove_accents = __commonJS({ + "node_modules/remove-accents/index.js"(exports, module) { + var characterMap = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\u1EA4": "A", + "\u1EAE": "A", + "\u1EB2": "A", + "\u1EB4": "A", + "\u1EB6": "A", + "\xC6": "AE", + "\u1EA6": "A", + "\u1EB0": "A", + "\u0202": "A", + "\u1EA2": "A", + "\u1EA0": "A", + "\u1EA8": "A", + "\u1EAA": "A", + "\u1EAC": "A", + "\xC7": "C", + "\u1E08": "C", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\u1EBE": "E", + "\u1E16": "E", + "\u1EC0": "E", + "\u1E14": "E", + "\u1E1C": "E", + "\u0206": "E", + "\u1EBA": "E", + "\u1EBC": "E", + "\u1EB8": "E", + "\u1EC2": "E", + "\u1EC4": "E", + "\u1EC6": "E", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\u1E2E": "I", + "\u020A": "I", + "\u1EC8": "I", + "\u1ECA": "I", + "\xD0": "D", + "\xD1": "N", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\u1ED0": "O", + "\u1E4C": "O", + "\u1E52": "O", + "\u020E": "O", + "\u1ECE": "O", + "\u1ECC": "O", + "\u1ED4": "O", + "\u1ED6": "O", + "\u1ED8": "O", + "\u1EDC": "O", + "\u1EDE": "O", + "\u1EE0": "O", + "\u1EDA": "O", + "\u1EE2": "O", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\u1EE6": "U", + "\u1EE4": "U", + "\u1EEC": "U", + "\u1EEE": "U", + "\u1EF0": "U", + "\xDD": "Y", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\u1EA5": "a", + "\u1EAF": "a", + "\u1EB3": "a", + "\u1EB5": "a", + "\u1EB7": "a", + "\xE6": "ae", + "\u1EA7": "a", + "\u1EB1": "a", + "\u0203": "a", + "\u1EA3": "a", + "\u1EA1": "a", + "\u1EA9": "a", + "\u1EAB": "a", + "\u1EAD": "a", + "\xE7": "c", + "\u1E09": "c", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\u1EBF": "e", + "\u1E17": "e", + "\u1EC1": "e", + "\u1E15": "e", + "\u1E1D": "e", + "\u0207": "e", + "\u1EBB": "e", + "\u1EBD": "e", + "\u1EB9": "e", + "\u1EC3": "e", + "\u1EC5": "e", + "\u1EC7": "e", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\u1E2F": "i", + "\u020B": "i", + "\u1EC9": "i", + "\u1ECB": "i", + "\xF0": "d", + "\xF1": "n", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\u1ED1": "o", + "\u1E4D": "o", + "\u1E53": "o", + "\u020F": "o", + "\u1ECF": "o", + "\u1ECD": "o", + "\u1ED5": "o", + "\u1ED7": "o", + "\u1ED9": "o", + "\u1EDD": "o", + "\u1EDF": "o", + "\u1EE1": "o", + "\u1EDB": "o", + "\u1EE3": "o", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\u1EE7": "u", + "\u1EE5": "u", + "\u1EED": "u", + "\u1EEF": "u", + "\u1EF1": "u", + "\xFD": "y", + "\xFF": "y", + "\u0100": "A", + "\u0101": "a", + "\u0102": "A", + "\u0103": "a", + "\u0104": "A", + "\u0105": "a", + "\u0106": "C", + "\u0107": "c", + "\u0108": "C", + "\u0109": "c", + "\u010A": "C", + "\u010B": "c", + "\u010C": "C", + "\u010D": "c", + "C\u0306": "C", + "c\u0306": "c", + "\u010E": "D", + "\u010F": "d", + "\u0110": "D", + "\u0111": "d", + "\u0112": "E", + "\u0113": "e", + "\u0114": "E", + "\u0115": "e", + "\u0116": "E", + "\u0117": "e", + "\u0118": "E", + "\u0119": "e", + "\u011A": "E", + "\u011B": "e", + "\u011C": "G", + "\u01F4": "G", + "\u011D": "g", + "\u01F5": "g", + "\u011E": "G", + "\u011F": "g", + "\u0120": "G", + "\u0121": "g", + "\u0122": "G", + "\u0123": "g", + "\u0124": "H", + "\u0125": "h", + "\u0126": "H", + "\u0127": "h", + "\u1E2A": "H", + "\u1E2B": "h", + "\u0128": "I", + "\u0129": "i", + "\u012A": "I", + "\u012B": "i", + "\u012C": "I", + "\u012D": "i", + "\u012E": "I", + "\u012F": "i", + "\u0130": "I", + "\u0131": "i", + "\u0132": "IJ", + "\u0133": "ij", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u1E30": "K", + "\u1E31": "k", + "K\u0306": "K", + "k\u0306": "k", + "\u0139": "L", + "\u013A": "l", + "\u013B": "L", + "\u013C": "l", + "\u013D": "L", + "\u013E": "l", + "\u013F": "L", + "\u0140": "l", + "\u0141": "l", + "\u0142": "l", + "\u1E3E": "M", + "\u1E3F": "m", + "M\u0306": "M", + "m\u0306": "m", + "\u0143": "N", + "\u0144": "n", + "\u0145": "N", + "\u0146": "n", + "\u0147": "N", + "\u0148": "n", + "\u0149": "n", + "N\u0306": "N", + "n\u0306": "n", + "\u014C": "O", + "\u014D": "o", + "\u014E": "O", + "\u014F": "o", + "\u0150": "O", + "\u0151": "o", + "\u0152": "OE", + "\u0153": "oe", + "P\u0306": "P", + "p\u0306": "p", + "\u0154": "R", + "\u0155": "r", + "\u0156": "R", + "\u0157": "r", + "\u0158": "R", + "\u0159": "r", + "R\u0306": "R", + "r\u0306": "r", + "\u0212": "R", + "\u0213": "r", + "\u015A": "S", + "\u015B": "s", + "\u015C": "S", + "\u015D": "s", + "\u015E": "S", + "\u0218": "S", + "\u0219": "s", + "\u015F": "s", + "\u0160": "S", + "\u0161": "s", + "\u0162": "T", + "\u0163": "t", + "\u021B": "t", + "\u021A": "T", + "\u0164": "T", + "\u0165": "t", + "\u0166": "T", + "\u0167": "t", + "T\u0306": "T", + "t\u0306": "t", + "\u0168": "U", + "\u0169": "u", + "\u016A": "U", + "\u016B": "u", + "\u016C": "U", + "\u016D": "u", + "\u016E": "U", + "\u016F": "u", + "\u0170": "U", + "\u0171": "u", + "\u0172": "U", + "\u0173": "u", + "\u0216": "U", + "\u0217": "u", + "V\u0306": "V", + "v\u0306": "v", + "\u0174": "W", + "\u0175": "w", + "\u1E82": "W", + "\u1E83": "w", + "X\u0306": "X", + "x\u0306": "x", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "Y\u0306": "Y", + "y\u0306": "y", + "\u0179": "Z", + "\u017A": "z", + "\u017B": "Z", + "\u017C": "z", + "\u017D": "Z", + "\u017E": "z", + "\u017F": "s", + "\u0192": "f", + "\u01A0": "O", + "\u01A1": "o", + "\u01AF": "U", + "\u01B0": "u", + "\u01CD": "A", + "\u01CE": "a", + "\u01CF": "I", + "\u01D0": "i", + "\u01D1": "O", + "\u01D2": "o", + "\u01D3": "U", + "\u01D4": "u", + "\u01D5": "U", + "\u01D6": "u", + "\u01D7": "U", + "\u01D8": "u", + "\u01D9": "U", + "\u01DA": "u", + "\u01DB": "U", + "\u01DC": "u", + "\u1EE8": "U", + "\u1EE9": "u", + "\u1E78": "U", + "\u1E79": "u", + "\u01FA": "A", + "\u01FB": "a", + "\u01FC": "AE", + "\u01FD": "ae", + "\u01FE": "O", + "\u01FF": "o", + "\xDE": "TH", + "\xFE": "th", + "\u1E54": "P", + "\u1E55": "p", + "\u1E64": "S", + "\u1E65": "s", + "X\u0301": "X", + "x\u0301": "x", + "\u0403": "\u0413", + "\u0453": "\u0433", + "\u040C": "\u041A", + "\u045C": "\u043A", + "A\u030B": "A", + "a\u030B": "a", + "E\u030B": "E", + "e\u030B": "e", + "I\u030B": "I", + "i\u030B": "i", + "\u01F8": "N", + "\u01F9": "n", + "\u1ED2": "O", + "\u1ED3": "o", + "\u1E50": "O", + "\u1E51": "o", + "\u1EEA": "U", + "\u1EEB": "u", + "\u1E80": "W", + "\u1E81": "w", + "\u1EF2": "Y", + "\u1EF3": "y", + "\u0200": "A", + "\u0201": "a", + "\u0204": "E", + "\u0205": "e", + "\u0208": "I", + "\u0209": "i", + "\u020C": "O", + "\u020D": "o", + "\u0210": "R", + "\u0211": "r", + "\u0214": "U", + "\u0215": "u", + "B\u030C": "B", + "b\u030C": "b", + "\u010C\u0323": "C", + "\u010D\u0323": "c", + "\xCA\u030C": "E", + "\xEA\u030C": "e", + "F\u030C": "F", + "f\u030C": "f", + "\u01E6": "G", + "\u01E7": "g", + "\u021E": "H", + "\u021F": "h", + "J\u030C": "J", + "\u01F0": "j", + "\u01E8": "K", + "\u01E9": "k", + "M\u030C": "M", + "m\u030C": "m", + "P\u030C": "P", + "p\u030C": "p", + "Q\u030C": "Q", + "q\u030C": "q", + "\u0158\u0329": "R", + "\u0159\u0329": "r", + "\u1E66": "S", + "\u1E67": "s", + "V\u030C": "V", + "v\u030C": "v", + "W\u030C": "W", + "w\u030C": "w", + "X\u030C": "X", + "x\u030C": "x", + "Y\u030C": "Y", + "y\u030C": "y", + "A\u0327": "A", + "a\u0327": "a", + "B\u0327": "B", + "b\u0327": "b", + "\u1E10": "D", + "\u1E11": "d", + "\u0228": "E", + "\u0229": "e", + "\u0190\u0327": "E", + "\u025B\u0327": "e", + "\u1E28": "H", + "\u1E29": "h", + "I\u0327": "I", + "i\u0327": "i", + "\u0197\u0327": "I", + "\u0268\u0327": "i", + "M\u0327": "M", + "m\u0327": "m", + "O\u0327": "O", + "o\u0327": "o", + "Q\u0327": "Q", + "q\u0327": "q", + "U\u0327": "U", + "u\u0327": "u", + "X\u0327": "X", + "x\u0327": "x", + "Z\u0327": "Z", + "z\u0327": "z", + "\u0439": "\u0438", + "\u0419": "\u0418", + "\u0451": "\u0435", + "\u0401": "\u0415" + }; + var chars = Object.keys(characterMap).join("|"); + var allAccents = new RegExp(chars, "g"); + var firstAccent = new RegExp(chars, ""); + function matcher(match2) { + return characterMap[match2]; + } + var removeAccents3 = function(string) { + return string.replace(allAccents, matcher); + }; + var hasAccents = function(string) { + return !!string.match(firstAccent); + }; + module.exports = removeAccents3; + module.exports.has = hasAccents; + module.exports.remove = removeAccents3; + } +}); + +// node_modules/fast-deep-equal/es6/index.js +var require_es6 = __commonJS({ + "node_modules/fast-deep-equal/es6/index.js"(exports, module) { + "use strict"; + module.exports = function equal(a2, b2) { + if (a2 === b2) return true; + if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { + if (a2.constructor !== b2.constructor) return false; + var length, i2, keys; + if (Array.isArray(a2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (!equal(a2[i2], b2[i2])) return false; + return true; + } + if (a2 instanceof Map && b2 instanceof Map) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + for (i2 of a2.entries()) + if (!equal(i2[1], b2.get(i2[0]))) return false; + return true; + } + if (a2 instanceof Set && b2 instanceof Set) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + return true; + } + if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (a2[i2] !== b2[i2]) return false; + return true; + } + if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; + if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); + if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) return false; + for (i2 = length; i2-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; + for (i2 = length; i2-- !== 0; ) { + var key = keys[i2]; + if (!equal(a2[key], b2[key])) return false; + } + return true; + } + return a2 !== a2 && b2 !== b2; + }; + } +}); + +// package-external:@wordpress/date +var require_date = __commonJS({ + "package-external:@wordpress/date"(exports, module) { + module.exports = window.wp.date; + } +}); + +// package-external:@wordpress/warning +var require_warning = __commonJS({ + "package-external:@wordpress/warning"(exports, module) { + module.exports = window.wp.warning; + } +}); + +// package-external:@wordpress/deprecated +var require_deprecated = __commonJS({ + "package-external:@wordpress/deprecated"(exports, module) { + module.exports = window.wp.deprecated; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// package-external:@wordpress/patterns +var require_patterns = __commonJS({ + "package-external:@wordpress/patterns"(exports, module) { + module.exports = window.wp.patterns; + } +}); + +// package-external:@wordpress/block-editor +var require_block_editor = __commonJS({ + "package-external:@wordpress/block-editor"(exports, module) { + module.exports = window.wp.blockEditor; + } +}); + +// routes/pattern-list/stage.tsx +import { + useParams, + useNavigate, + useSearch, + Link, + useInvalidate +} from "@wordpress/route"; + +// node_modules/dequal/dist/index.mjs +var has = Object.prototype.hasOwnProperty; +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + if (foo && bar && (ctor = foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + if (ctor === Array) { + if ((len = foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])) ; + } + return len === -1; + } + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; + } + return len === -1; + } + if (ArrayBuffer.isView(foo)) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]) ; + } + return len === -1; + } + if (!ctor || typeof foo === "object") { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + return foo !== foo && bar !== bar; +} + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + const preserved = (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + result = { + ...result, + filters: (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ) + }; + } + if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { + result = { + ...result, + sort: defaultView?.sort + }; + } + return result; +} + +// packages/views/build-module/use-view.mjs +function omit(obj, keys) { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +} +function useView(config) { + const { + kind, + name, + slug, + defaultView, + activeViewOverrides, + queryParams, + onChangeQueryParams + } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data.useSelect)( + (select2) => { + return select2(import_preferences.store).get( + "core/views", + preferenceKey + ); + }, + [preferenceKey] + ); + const { set } = (0, import_data.useDispatch)(import_preferences.store); + const baseView = persistedView ?? defaultView; + const page = Number(queryParams?.page ?? baseView.page ?? 1); + const search = queryParams?.search ?? baseView.search ?? ""; + const view = (0, import_element.useMemo)(() => { + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); + }, [baseView, page, search, activeViewOverrides, defaultView]); + const isModified = !!persistedView; + const updateView = (0, import_element.useCallback)( + (newView) => { + const urlParams = { + page: newView?.page, + search: newView?.search + }; + const preferenceView = stripActiveViewOverrides( + omit(newView, ["page", "search"]), + activeViewOverrides, + defaultView + ); + if (onChangeQueryParams && !dequal(urlParams, { page, search })) { + onChangeQueryParams(urlParams); + } + const comparableBaseView = stripActiveViewOverrides( + baseView, + activeViewOverrides, + defaultView + ); + const comparableDefaultView = stripActiveViewOverrides( + defaultView, + activeViewOverrides, + defaultView + ); + if (!dequal(comparableBaseView, preferenceView)) { + if (dequal(preferenceView, comparableDefaultView)) { + set("core/views", preferenceKey, void 0); + } else { + set("core/views", preferenceKey, preferenceView); + } + } + }, + [ + onChangeQueryParams, + page, + search, + baseView, + defaultView, + activeViewOverrides, + set, + preferenceKey + ] + ); + const resetToDefault = (0, import_element.useCallback)(() => { + set("core/views", preferenceKey, void 0); + }, [preferenceKey, set]); + return { + view, + isModified, + updateView, + resetToDefault + }; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); + +// packages/dataviews/build-module/dataviews/index.mjs +var import_element54 = __toESM(require_element(), 1); +var import_compose12 = __toESM(require_compose(), 1); + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React2 = __toESM(require_react(), 1); +var UNINITIALIZED = {}; +function useRefWithInit(init2, initArg) { + const ref = React2.useRef(UNINITIALIZED); + if (ref.current === UNINITIALIZED) { + ref.current = init2(initArg); + } + return ref; +} + +// node_modules/@base-ui/react/esm/utils/useRenderElement.js +var React5 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useMergedRefs.js +function useMergedRefs(a2, b2, c2, d2) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChange(forkRef, a2, b2, c2, d2)) { + update(forkRef, [a2, b2, c2, d2]); + } + return forkRef.callback; +} +function useMergedRefsN(refs) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChangeN(forkRef, refs)) { + update(forkRef, refs); + } + return forkRef.callback; +} +function createForkRef() { + return { + callback: null, + cleanup: null, + refs: [] + }; +} +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]); +} +function update(forkRef, refs) { + forkRef.refs = refs; + if (refs.every((ref) => ref == null)) { + forkRef.callback = null; + return; + } + forkRef.callback = (instance) => { + if (forkRef.cleanup) { + forkRef.cleanup(); + forkRef.cleanup = null; + } + if (instance != null) { + const cleanupCallbacks = Array(refs.length).fill(null); + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const refCleanup = ref(instance); + if (typeof refCleanup === "function") { + cleanupCallbacks[i2] = refCleanup; + } + break; + } + case "object": { + ref.current = instance; + break; + } + default: + } + } + forkRef.cleanup = () => { + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const cleanupCallback = cleanupCallbacks[i2]; + if (typeof cleanupCallback === "function") { + cleanupCallback(); + } else { + ref(null); + } + break; + } + case "object": { + ref.current = null; + break; + } + default: + } + } + }; + } + }; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +var React4 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/reactVersion.js +var React3 = __toESM(require_react(), 1); +var majorVersion = parseInt(React3.version, 10); +function isReactVersionAtLeast(reactVersionToCheck) { + return majorVersion >= reactVersionToCheck; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +function getReactElementRef(element) { + if (!/* @__PURE__ */ React4.isValidElement(element)) { + return null; + } + const reactElement = element; + const propsWithRef = reactElement.props; + return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; +} + +// node_modules/@base-ui/utils/esm/mergeObjects.js +function mergeObjects(a2, b2) { + if (a2 && !b2) { + return a2; + } + if (!a2 && b2) { + return b2; + } + if (a2 || b2) { + return { + ...a2, + ...b2 + }; + } + return void 0; +} + +// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +function getStateAttributesProps(state, customMapping) { + const props = {}; + for (const key in state) { + const value = state[key]; + if (customMapping?.hasOwnProperty(key)) { + const customProps = customMapping[key](value); + if (customProps != null) { + Object.assign(props, customProps); + } + continue; + } + if (value === true) { + props[`data-${key.toLowerCase()}`] = ""; + } else if (value) { + props[`data-${key.toLowerCase()}`] = value.toString(); + } + } + return props; +} + +// node_modules/@base-ui/react/esm/utils/resolveClassName.js +function resolveClassName(className, state) { + return typeof className === "function" ? className(state) : className; +} + +// node_modules/@base-ui/react/esm/utils/resolveStyle.js +function resolveStyle(style, state) { + return typeof style === "function" ? style(state) : style; +} + +// 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 (b2) { + merged = mergeOne(merged, b2); + } + if (c2) { + merged = mergeOne(merged, c2); + } + if (d2) { + merged = mergeOne(merged, d2); + } + if (e2) { + merged = mergeOne(merged, e2); + } + return merged; +} +function mergePropsN(props) { + if (props.length === 0) { + return EMPTY_PROPS; + } + if (props.length === 1) { + return resolvePropsGetter(props[0], EMPTY_PROPS); + } + let merged = { + ...resolvePropsGetter(props[0], EMPTY_PROPS) + }; + for (let i2 = 1; i2 < props.length; i2 += 1) { + merged = mergeOne(merged, props[i2]); + } + return merged; +} +function mergeOne(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return inputProps(merged); + } + return mutablyMergeInto(merged, inputProps); +} +function mutablyMergeInto(mergedProps, externalProps) { + if (!externalProps) { + return mergedProps; + } + for (const propName in externalProps) { + const externalPropValue = externalProps[propName]; + switch (propName) { + case "style": { + mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); + break; + } + case "className": { + mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); + break; + } + default: { + if (isEventHandler(propName, externalPropValue)) { + mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); + } else { + mergedProps[propName] = externalPropValue; + } + } + } + } + return mergedProps; +} +function isEventHandler(key, value) { + const code0 = key.charCodeAt(0); + const code1 = key.charCodeAt(1); + const code2 = key.charCodeAt(2); + return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); +} +function isPropsGetter(inputProps) { + return typeof inputProps === "function"; +} +function resolvePropsGetter(inputProps, previousProps) { + if (isPropsGetter(inputProps)) { + return inputProps(previousProps); + } + return inputProps ?? EMPTY_PROPS; +} +function mergeEventHandlers(ourHandler, theirHandler) { + if (!theirHandler) { + return ourHandler; + } + if (!ourHandler) { + return theirHandler; + } + return (event) => { + if (isSyntheticEvent(event)) { + const baseUIEvent = event; + makeEventPreventable(baseUIEvent); + const result2 = theirHandler(baseUIEvent); + if (!baseUIEvent.baseUIHandlerPrevented) { + ourHandler?.(baseUIEvent); + } + return result2; + } + const result = theirHandler(event); + ourHandler?.(event); + return result; + }; +} +function makeEventPreventable(event) { + event.preventBaseUIHandler = () => { + event.baseUIHandlerPrevented = true; + }; + return event; +} +function mergeClassNames(ourClassName, theirClassName) { + if (theirClassName) { + if (ourClassName) { + return theirClassName + " " + ourClassName; + } + return theirClassName; + } + return ourClassName; +} +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/useRenderElement.js +var import_react = __toESM(require_react(), 1); +function useRenderElement(element, componentProps, params = {}) { + const renderProp = componentProps.render; + const outProps = useRenderElementProps(componentProps, params); + if (params.enabled === false) { + return null; + } + const state = params.state ?? EMPTY_OBJECT; + return evaluateRenderProp(element, renderProp, outProps, state); +} +function useRenderElementProps(componentProps, params = {}) { + const { + className: classNameProp, + style: styleProp, + render: renderProp + } = componentProps; + const { + state = EMPTY_OBJECT, + ref, + props, + stateAttributesMapping, + 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 outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + if (typeof document !== "undefined") { + if (!enabled) { + useMergedRefs(null, null); + } else if (Array.isArray(ref)) { + outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); + } else { + outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); + } + } + if (!enabled) { + return EMPTY_OBJECT; + } + if (className !== void 0) { + outProps.className = mergeClassNames(outProps.className, className); + } + if (style !== void 0) { + outProps.style = mergeObjects(outProps.style, style); + } + return outProps; +} +function evaluateRenderProp(element, render4, props, state) { + if (render4) { + if (typeof render4 === "function") { + return render4(props, state); + } + const mergedProps = mergeProps(props, render4.props); + mergedProps.ref = props.ref; + return /* @__PURE__ */ React5.cloneElement(render4, 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(8)); +} +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__ */ React5.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// node_modules/clsx/dist/clsx.mjs +function r(e2) { + var t2, f2, n2 = ""; + if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; + else if ("object" == typeof e2) if (Array.isArray(e2)) { + var o2 = e2.length; + for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2); + } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); + return n2; +} +function clsx() { + for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2); + return n2; +} +var clsx_default = clsx; + +// packages/ui/build-module/stack/stack.mjs +var import_element2 = __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"); + 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 Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && `var(--wpds-dimension-gap-${gap})`, + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render: render4, + ref, + props: mergeProps(props, { style, className: style_default.stack }) + }); + return element; +}); + +// packages/icons/build-module/library/arrow-down.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var arrow_down_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: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); + +// packages/icons/build-module/library/arrow-left.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var arrow_left_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: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); + +// packages/icons/build-module/library/arrow-right.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var arrow_right_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: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); + +// packages/icons/build-module/library/arrow-up.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var arrow_up_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: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); + +// packages/icons/build-module/library/block-table.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); + +// packages/icons/build-module/library/category.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var category_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + import_primitives6.Path, + { + d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", + fillRule: "evenodd", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/check.mjs +var import_primitives7 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var check_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives8 = __toESM(require_primitives(), 1); +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.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/cog.mjs +var import_primitives9 = __toESM(require_primitives(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var cog_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + import_primitives9.Path, + { + fillRule: "evenodd", + d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/envelope.mjs +var import_primitives10 = __toESM(require_primitives(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + import_primitives10.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" + } +) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives11 = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( + import_primitives11.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/format-list-bullets-rtl.mjs +var import_primitives12 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); + +// packages/icons/build-module/library/format-list-bullets.mjs +var import_primitives13 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); + +// packages/icons/build-module/library/funnel.mjs +var import_primitives14 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); + +// packages/icons/build-module/library/link.mjs +var import_primitives15 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var link_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); + +// packages/icons/build-module/library/mobile.mjs +var import_primitives16 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives17 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives18 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.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_primitives19 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.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/icons/build-module/library/scheduled.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + import_primitives20.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z" + } +) }); + +// packages/icons/build-module/library/search.mjs +var import_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var search_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); + +// packages/icons/build-module/library/seen.mjs +var import_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// packages/icons/build-module/library/unseen.mjs +var import_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var import_element3 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/constants.mjs +var import_i18n = __toESM(require_i18n(), 1); +var OPERATOR_IS_ANY = "isAny"; +var OPERATOR_IS_NONE = "isNone"; +var OPERATOR_IS_ALL = "isAll"; +var OPERATOR_IS_NOT_ALL = "isNotAll"; +var OPERATOR_BETWEEN = "between"; +var OPERATOR_IN_THE_PAST = "inThePast"; +var OPERATOR_OVER = "over"; +var OPERATOR_IS = "is"; +var OPERATOR_IS_NOT = "isNot"; +var OPERATOR_LESS_THAN = "lessThan"; +var OPERATOR_GREATER_THAN = "greaterThan"; +var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; +var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; +var OPERATOR_BEFORE = "before"; +var OPERATOR_AFTER = "after"; +var OPERATOR_BEFORE_INC = "beforeInc"; +var OPERATOR_AFTER_INC = "afterInc"; +var OPERATOR_CONTAINS = "contains"; +var OPERATOR_NOT_CONTAINS = "notContains"; +var OPERATOR_STARTS_WITH = "startsWith"; +var OPERATOR_ON = "on"; +var OPERATOR_NOT_ON = "notOn"; +var SORTING_DIRECTIONS = ["asc", "desc"]; +var sortArrows = { asc: "\u2191", desc: "\u2193" }; +var sortValues = { asc: "ascending", desc: "descending" }; +var sortLabels = { + asc: (0, import_i18n.__)("Sort ascending"), + desc: (0, import_i18n.__)("Sort descending") +}; +var sortIcons = { + asc: arrow_up_default, + desc: arrow_down_default +}; +var LAYOUT_TABLE = "table"; +var LAYOUT_GRID = "grid"; +var LAYOUT_LIST = "list"; +var LAYOUT_ACTIVITY = "activity"; +var LAYOUT_PICKER_GRID = "pickerGrid"; +var LAYOUT_PICKER_TABLE = "pickerTable"; + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var DataViewsContext = (0, import_element3.createContext)({ + view: { type: LAYOUT_TABLE }, + onChangeView: () => { + }, + fields: [], + data: [], + paginationInfo: { + totalItems: 0, + totalPages: 0 + }, + selection: [], + onChangeSelection: () => { + }, + setOpenedFilter: () => { + }, + openedFilter: null, + getItemId: (item) => item.id, + isItemClickable: () => true, + renderItemLink: void 0, + containerWidth: 0, + containerRef: (0, import_element3.createRef)(), + resizeObserverRef: () => { + }, + defaultLayouts: { list: {}, grid: {}, table: {} }, + filters: [], + isShowingFilter: false, + setIsShowingFilter: () => { + }, + hasInfiniteScrollHandler: false, + config: { + perPageSizes: [] + } +}); +DataViewsContext.displayName = "DataViewsContext"; +var dataviews_context_default = DataViewsContext; + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var import_i18n21 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_i18n9 = __toESM(require_i18n(), 1); +var import_components6 = __toESM(require_components(), 1); +var import_element10 = __toESM(require_element(), 1); +var import_keycodes = __toESM(require_keycodes(), 1); + +// packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs +var import_components = __toESM(require_components(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +function DataViewsSelectionCheckbox({ + selection, + onChangeSelection, + item, + getItemId, + titleField, + disabled, + ...extraProps +}) { + const id = getItemId(item); + const checked = !disabled && selection.includes(id); + const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n2.__)("(no title)"); + return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( + import_components.CheckboxControl, + { + className: "dataviews-selection-checkbox", + "aria-label": selectionLabel, + "aria-disabled": disabled, + checked, + onChange: () => { + if (disabled) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + }, + ...extraProps + } + ); +} + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_components2 = __toESM(require_components(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_element4 = __toESM(require_element(), 1); +var import_data3 = __toESM(require_data(), 1); +var import_compose = __toESM(require_compose(), 1); + +// packages/dataviews/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/dataviews" +); + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var { Menu, kebabCase } = unlock(import_components2.privateApis); +function ButtonTrigger({ + action, + onClick, + items, + variant +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Button, + { + disabled: !!action.disabled, + accessibleWhenDisabled: true, + size: "compact", + variant, + onClick, + children: label + } + ); +} +function MenuItemTrigger({ + action, + onClick, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.ItemLabel, { children: label }) }); +} +function ActionModal({ + action, + items, + closeModal +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Modal, + { + title: modalHeader || label, + __experimentalHideHeader: !!action.hideModalHeader, + onRequestClose: closeModal, + focusOnMount: action.modalFocusOnMount ?? true, + size: action.modalSize || "medium", + overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase( + action.id + )}`, + children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(action.RenderModal, { items, closeModal }) + } + ); +} +function ActionsMenuGroup({ + actions, + item, + registry, + setActiveModalAction +}) { + const { primaryActions, regularActions } = (0, import_element4.useMemo)(() => { + return actions.reduce( + (acc, action) => { + (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); + return acc; + }, + { + primaryActions: [], + regularActions: [] + } + ); + }, [actions]); + const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + MenuItemTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item] + }, + action.id + )); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Menu.Group, { children: [ + renderActionGroup(primaryActions), + primaryActions.length > 0 && regularActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Separator, {}), + renderActionGroup(regularActions) + ] }); +} +function ItemActions({ + item, + actions, + isCompact +}) { + const registry = (0, import_data3.useRegistry)(); + const { primaryActions, eligibleActions } = (0, import_element4.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isCompact) { + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + isSmall: true, + registry + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)( + Stack, + { + direction: "row", + justify: "flex-end", + className: "dataviews-item-actions", + style: { + flexShrink: 0, + width: "auto" + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + registry + } + ) + ] + } + ); +} +function CompactItemActions({ + item, + actions, + isSmall, + registry +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)( + null + ); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Menu, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + Menu.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Button, + { + size: isSmall ? "small" : "compact", + icon: more_vertical_default, + label: (0, import_i18n3.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + className: "dataviews-all-actions-button" + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionsMenuGroup, + { + actions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} +function PrimaryActions({ + item, + actions, + registry, + buttonVariant +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)(null); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isMobileViewport) { + return null; + } + if (!Array.isArray(actions) || actions.length === 0) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [ + actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ButtonTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item], + variant: buttonVariant + }, + action.id + )), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_components3 = __toESM(require_components(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); +var import_element5 = __toESM(require_element(), 1); +var import_data4 = __toESM(require_data(), 1); +var import_compose2 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/utils/get-footer-message.mjs +var import_i18n4 = __toESM(require_i18n(), 1); +function getFooterMessage(selectionCount, itemsCount, totalItems) { + if (selectionCount > 0) { + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item selected", "%d Items selected", selectionCount), + selectionCount + ); + } + if (totalItems > itemsCount) { + return (0, import_i18n4.sprintf)( + /* translators: %1$d: number of items. %2$d: total number of items. */ + (0, import_i18n4._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), + itemsCount, + totalItems + ); + } + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item", "%d Items", itemsCount), + itemsCount + ); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +function ActionWithModal({ + action, + items, + ActionTriggerComponent +}) { + const [isModalOpen, setIsModalOpen] = (0, import_element5.useState)(false); + const actionTriggerProps = { + action, + onClick: () => { + setIsModalOpen(true); + }, + items + }; + return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), + isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionModal, + { + action, + items, + closeModal: () => setIsModalOpen(false) + } + ) + ] }); +} +function useHasAPossibleBulkAction(actions, item) { + return (0, import_element5.useMemo)(() => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }, [actions, item]); +} +function useSomeItemHasAPossibleBulkAction(actions, data) { + return (0, import_element5.useMemo)(() => { + return data.some((item) => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }); + }, [actions, data]); +} +function BulkSelectionCheckbox({ + selection, + onChangeSelection, + data, + actions, + getItemId +}) { + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return actions.some( + (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) + ); + }); + }, [data, actions]); + const selectedItems = data.filter( + (item) => selection.includes(getItemId(item)) && selectableItems.includes(item) + ); + const areAllSelected = selectedItems.length === selectableItems.length; + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.CheckboxControl, + { + className: "dataviews-view-table-selection-checkbox", + checked: areAllSelected, + indeterminate: !areAllSelected && !!selectedItems.length, + onChange: () => { + if (areAllSelected) { + onChangeSelection([]); + } else { + onChangeSelection( + selectableItems.map((item) => getItemId(item)) + ); + } + }, + "aria-label": areAllSelected ? (0, import_i18n5.__)("Deselect all") : (0, import_i18n5.__)("Select all") + } + ); +} +function ActionTrigger({ + action, + onClick, + isBusy, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + if (isMobile) { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + label, + icon: action.icon, + size: "compact", + onClick, + isBusy + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + size: "compact", + onClick, + isBusy, + children: label + } + ); +} +var EMPTY_ARRAY2 = []; +function ActionButton({ + action, + selectedItems, + actionInProgress, + setActionInProgress +}) { + const registry = (0, import_data4.useRegistry)(); + const selectedEligibleItems = (0, import_element5.useMemo)(() => { + return selectedItems.filter((item) => { + return !action.isEligible || action.isEligible(item); + }); + }, [action, selectedItems]); + if ("RenderModal" in action) { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionWithModal, + { + action, + items: selectedEligibleItems, + ActionTriggerComponent: ActionTrigger + }, + action.id + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionTrigger, + { + action, + onClick: async () => { + setActionInProgress(action.id); + await action.callback(selectedItems, { + registry + }); + setActionInProgress(null); + }, + items: selectedEligibleItems, + isBusy: actionInProgress === action.id + }, + action.id + ); +} +function renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { + const message2 = getFooterMessage( + selection.length, + data.length, + paginationInfo.totalItems + ); + return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__container", + gap: "md", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId + } + ), + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), + /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__action-buttons", + gap: "xs", + children: [ + actionsToShow.map((action) => { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionButton, + { + action, + selectedItems, + actionInProgress, + setActionInProgress + }, + action.id + ); + }), + selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + icon: close_small_default, + showTooltip: true, + tooltipPosition: "top", + size: "compact", + label: (0, import_i18n5.__)("Cancel"), + disabled: !!actionInProgress, + accessibleWhenDisabled: false, + onClick: () => { + onChangeSelection(EMPTY_ARRAY2); + } + } + ) + ] + } + ) + ] + } + ); +} +function FooterContent({ + selection, + actions, + onChangeSelection, + data, + getItemId, + paginationInfo +}) { + const [actionInProgress, setActionInProgress] = (0, import_element5.useState)( + null + ); + const footerContentRef = (0, import_element5.useRef)(null); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + const bulkActions = (0, import_element5.useMemo)( + () => actions.filter((action) => action.supportsBulk), + [actions] + ); + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return bulkActions.some( + (action) => !action.isEligible || action.isEligible(item) + ); + }); + }, [data, bulkActions]); + const selectedItems = (0, import_element5.useMemo)(() => { + return data.filter( + (item) => selection.includes(getItemId(item)) && selectableItems.includes(item) + ); + }, [selection, data, getItemId, selectableItems]); + const actionsToShow = (0, import_element5.useMemo)( + () => actions.filter((action) => { + return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( + (item) => !action.isEligible || action.isEligible(item) + ); + }), + [actions, selectedItems, isMobile] + ); + if (!actionInProgress) { + if (footerContentRef.current) { + footerContentRef.current = null; + } + return renderFooterContent( + data, + actions, + getItemId, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } else if (!footerContentRef.current) { + footerContentRef.current = renderFooterContent( + data, + actions, + getItemId, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } + return footerContentRef.current; +} +function BulkActionsFooter() { + const { + data, + selection, + actions = EMPTY_ARRAY2, + onChangeSelection, + getItemId, + paginationInfo + } = (0, import_element5.useContext)(dataviews_context_default); + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + FooterContent, + { + selection, + onChangeSelection, + data, + actions, + getItemId, + paginationInfo + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_i18n6 = __toESM(require_i18n(), 1); +var import_components4 = __toESM(require_components(), 1); +var import_element6 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/utils/get-hideable-fields.mjs +function getHideableFields(view, fields) { + const togglableFields = [ + view?.titleField, + view?.mediaField, + view?.descriptionField + ].filter(Boolean); + return fields.filter( + (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock(import_components4.privateApis); +function WithMenuSeparators({ children }) { + return import_element6.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_element6.Fragment, { children: [ + i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Separator, {}), + child + ] }, i2)); +} +var _HeaderMenu = (0, import_element6.forwardRef)(function HeaderMenu({ + fieldId, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove = true, + canInsertLeft = true, + canInsertRight = true +}, ref) { + const visibleFieldIds = view.fields ?? []; + const index = visibleFieldIds?.indexOf(fieldId); + const isSorted = view.sort?.field === fieldId; + let isHidable = false; + let isSortable = false; + let canAddFilter = false; + let operators = []; + const field = fields.find((f2) => f2.id === fieldId); + const { setIsShowingFilter } = (0, import_element6.useContext)(dataviews_context_default); + if (!field) { + return null; + } + isHidable = field.enableHiding !== false; + isSortable = field.enableSorting !== false; + const header = field.header; + operators = !!field.filterBy && field.filterBy?.operators || []; + canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; + if (!isSortable && !canMove && !isHidable && !canAddFilter) { + return header; + } + const hiddenFields = getHideableFields(view, fields).filter( + (f2) => !visibleFieldIds.includes(f2.id) + ); + const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; + const isRtl = (0, import_i18n6.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)( + Menu2.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + import_components4.Button, + { + size: "compact", + className: "dataviews-view-table-header-button", + ref, + variant: "tertiary" + } + ), + children: [ + header, + view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(WithMenuSeparators, { children: [ + isSortable && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Group, { children: SORTING_DIRECTIONS.map( + (direction) => { + const isChecked = view.sort && isSorted && view.sort.direction === direction; + const value = `${fieldId}-${direction}`; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.RadioItem, + { + name: "view-table-sorting", + value, + checked: isChecked, + onChange: () => { + onChangeView({ + ...view, + sort: { + field: fieldId, + direction + }, + showLevels: false + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: sortLabels[direction] }) + }, + value + ); + } + ) }), + canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: funnel_default }), + onClick: () => { + setOpenedFilter(fieldId); + setIsShowingFilter(true); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: fieldId, + value: void 0, + operator: operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Add filter") }) + } + ) }), + (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2.Group, { children: [ + canMove && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: arrow_left_default }), + disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, + onClick: () => { + const targetIndex = isRtl ? index + 1 : index - 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move left") }) + } + ), + canMove && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: arrow_right_default }), + disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, + onClick: () => { + const targetIndex = isRtl ? index - 1 : index + 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move right") }) + } + ), + canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert left") }) }), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index + 1 : index; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert right") }) }), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index : index + 1; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: unseen_default }), + onClick: () => { + onHide(field); + onChangeView({ + ...view, + fields: visibleFieldIds.filter( + (id) => id !== fieldId + ) + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Hide column") }) + } + ) + ] }) + ] }) }) + ] }); +}); +var ColumnHeaderMenu = _HeaderMenu; +var column_header_menu_default = ColumnHeaderMenu; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs +var import_element7 = __toESM(require_element(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +function getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className +}) { + if (!isItemClickable(item) || !onClickItem) { + return { className }; + } + return { + className: className ? `${className} ${className}--clickable` : void 0, + role: "button", + tabIndex: 0, + onClick: (event) => { + event.stopPropagation(); + onClickItem(item); + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + onClickItem(item); + } + } + }; +} +function ItemClickWrapper({ + item, + isItemClickable, + onClickItem, + renderItemLink, + className, + children, + ...extraProps +}) { + if (!isItemClickable(item)) { + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className, ...extraProps, children }); + } + if (renderItemLink) { + const renderedElement = renderItemLink({ + item, + className: `${className} ${className}--clickable`, + ...extraProps, + children + }); + return (0, import_element7.cloneElement)(renderedElement, { + onClick: (event) => { + event.stopPropagation(); + if (renderedElement.props.onClick) { + renderedElement.props.onClick(event); + } + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + if (renderedElement.props.onKeyDown) { + renderedElement.props.onKeyDown(event); + } + } + } + }); + } + const clickProps = getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className + }); + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ...clickProps, ...extraProps, children }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +function ColumnPrimary({ + item, + level, + titleField, + mediaField, + descriptionField, + onClickItem, + renderItemLink, + isItemClickable +}) { + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ + mediaField && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", + "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "32px" } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( + Stack, + { + direction: "column", + align: "flex-start", + className: "dataviews-view-table__primary-column-content", + children: [ + titleField && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", + children: [ + level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("span", { className: "dataviews-view-table__level", children: [ + Array(level).fill("\u2014").join(" "), + "\xA0" + ] }), + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(titleField.render, { item, field: titleField }) + ] + } + ), + descriptionField && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) + ] + } + ) + ] }); +} +var column_primary_default = ColumnPrimary; + +// packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs +var import_compose3 = __toESM(require_compose(), 1); +var import_element8 = __toESM(require_element(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); +var isScrolledToEnd = (element) => { + if ((0, import_i18n7.isRTL)()) { + const scrollLeft = Math.abs(element.scrollLeft); + return scrollLeft <= 1; + } + return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; +}; +function useIsHorizontalScrollEnd({ + scrollContainerRef, + enabled = false +}) { + const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element8.useState)(false); + const handleIsHorizontalScrollEnd = (0, import_compose3.useDebounce)( + (0, import_element8.useCallback)(() => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); + } + }, [scrollContainerRef, setIsHorizontalScrollEnd]), + 200 + ); + (0, import_element8.useEffect)(() => { + if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { + return () => { + }; + } + handleIsHorizontalScrollEnd(); + scrollContainerRef.current.addEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.addEventListener("resize", handleIsHorizontalScrollEnd); + return () => { + scrollContainerRef.current?.removeEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.removeEventListener("resize", handleIsHorizontalScrollEnd); + }; + }, [scrollContainerRef, enabled]); + return isHorizontalScrollEnd; +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs +function getDataByGroup(data, groupByField) { + return data.reduce((groups, item) => { + const groupName = groupByField.getValue({ item }); + if (!groups.has(groupName)) { + groups.set(groupName, []); + } + groups.get(groupName)?.push(item); + return groups; + }, /* @__PURE__ */ new Map()); +} + +// packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs +var import_components5 = __toESM(require_components(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); +var import_element9 = __toESM(require_element(), 1); +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +function FieldItem({ + field, + isVisible: isVisible2, + onToggleVisibility +}) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.Icon, { icon: check_default }) }), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) + ] }) }); +} +function isDefined(item) { + return !!item; +} +function PropertiesSection({ + showLabel = true +}) { + const { view, fields, onChangeView } = (0, import_element9.useContext)(dataviews_context_default); + const regularFields = getHideableFields(view, fields); + if (!regularFields?.length) { + return null; + } + const titleField = fields.find((f2) => f2.id === view.titleField); + const previewField2 = fields.find((f2) => f2.id === view.mediaField); + const descriptionField = fields.find( + (f2) => f2.id === view.descriptionField + ); + const lockedFields = [ + { + field: titleField, + isVisibleFlag: "showTitle" + }, + { + field: previewField2, + isVisibleFlag: "showMedia" + }, + { + field: descriptionField, + isVisibleFlag: "showDescription" + } + ].filter(({ field }) => isDefined(field)); + const visibleFieldIds = view.fields ?? []; + const visibleRegularFieldsCount = regularFields.filter( + (f2) => visibleFieldIds.includes(f2.id) + ).length; + const visibleLockedFields = lockedFields.filter( + ({ isVisibleFlag }) => ( + // @ts-expect-error + view[isVisibleFlag] ?? true + ) + ); + const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; + const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ + showLabel && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.BaseControl.VisualLabel, { children: (0, import_i18n8.__)("Properties") }), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config__properties", + children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_components5.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ + lockedFields.map(({ field, isVisibleFlag }) => { + const isVisible2 = view[isVisibleFlag] ?? true; + const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + [isVisibleFlag]: !isVisible2 + }); + } + }, + field.id + ); + }), + regularFields.map((field) => { + const isVisible2 = visibleFieldIds.includes(field.id); + const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + fields: isVisible2 ? visibleFieldIds.filter( + (fieldId) => fieldId !== field.id + ) : [...visibleFieldIds, field.id] + }); + } + }, + field.id + ); + }) + ] }) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +function TableColumnField({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(field.render, { item, field }) }); +} +function TableRow({ + hasBulkActions, + item, + level, + actions, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + isItemClickable, + onClickItem, + renderItemLink, + onChangeSelection, + isActionsColumnSticky, + posinset +}) { + const { paginationInfo } = (0, import_element10.useContext)(dataviews_context_default); + const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); + const isSelected2 = hasPossibleBulkAction && selection.includes(id); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const isTouchDeviceRef = (0, import_element10.useRef)(false); + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": hasPossibleBulkAction && isSelected2, + "has-bulk-actions": hasPossibleBulkAction + }), + onTouchStart: () => { + isTouchDeviceRef.current = true; + }, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : void 0, + onMouseDown: (event) => { + const isMetaClick = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { + event?.preventDefault(); + } + }, + onClick: (event) => { + if (!hasPossibleBulkAction) { + return; + } + const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId, + titleField, + disabled: !hasPossibleBulkAction + } + ) }) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_primary_default, + { + item, + level, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable, + onClickItem, + renderItemLink + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableColumnField, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }), + !!actions?.length && // Disable reason: we are not making the element interactive, + // but preventing any click events from bubbling up to the + // table row. This allows us to add a click handler to the row + // itself (to toggle row selection) without erroneously + // intercepting click events from ItemActions. + /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + className: clsx_default("dataviews-view-table__actions-column", { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": isActionsColumnSticky + }), + onClick: (e2) => e2.stopPropagation(), + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ItemActions, { item, actions }) + } + ) + ] + } + ); +} +function ViewTable({ + actions, + data, + fields, + getItemId, + getItemLevel, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + view, + className, + empty +}) { + const { containerRef } = (0, import_element10.useContext)(dataviews_context_default); + const headerMenuRefs = (0, import_element10.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element10.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element10.useState)(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element10.useState)(null); + (0, import_element10.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element10.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const handleHeaderContextMenu = (event) => { + event.preventDefault(); + event.stopPropagation(); + const virtualAnchor = { + getBoundingClientRect: () => ({ + x: event.clientX, + y: event.clientY, + top: event.clientY, + left: event.clientX, + right: event.clientX, + bottom: event.clientY, + width: 0, + height: 0, + toJSON: () => ({}) + }) + }; + window.requestAnimationFrame(() => { + setContextMenuAnchor(virtualAnchor); + }); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const isRtl = (0, import_i18n9.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "table", + { + className: clsx_default("dataviews-view-table", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ), + "has-bulk-actions": hasBulkActions + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("colgroup", { children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-first-data" }), + columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "col", + { + className: clsx_default( + `dataviews-view-table__col-${column}`, + { + "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 + } + ) + }, + `col-${column}` + )), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-actions" }) + ] }), + contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components6.Popover, + { + anchor: contextMenuAnchor, + onClose: () => setContextMenuAnchor(null), + placement: "bottom-start", + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PropertiesSection, { showLabel: false }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("tr", { className: "dataviews-view-table__row", children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + className: "dataviews-view-table__checkbox-column", + scope: "col", + onContextMenu: handleHeaderContextMenu, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId + } + ) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false, + canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, + canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: canInsertOrMove, + canInsertLeft: canInsertOrMove, + canInsertRight: canInsertOrMove + } + ) + }, + column + ); + }), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + className: clsx_default( + "dataviews-view-table__actions-column", + { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd + } + ), + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n9.__)("Actions") }) + } + ) + ] }) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("tbody", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), + className: "dataviews-view-table__group-header-cell", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n9.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n9.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) }), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd + }, + getItemId(item) + )) + ] }, `group-${groupName}`) + ) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd, + posinset: isInfiniteScroll ? index + 1 : void 0 + }, + getItemId(item) + )) }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Spinner, {}) }) + ] + } + ) + ] }); +} +var table_default = ViewTable; + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_components9 = __toESM(require_components(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_components8 = __toESM(require_components(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); +var import_compose4 = __toESM(require_compose(), 1); +var import_keycodes2 = __toESM(require_keycodes(), 1); +var import_element12 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs +var import_components7 = __toESM(require_components(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); +var import_element11 = __toESM(require_element(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var imageSizes = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; +function useGridColumns() { + const context = (0, import_element11.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element11.useMemo)(() => { + const containerWidth = context.containerWidth; + const gap = 32; + const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; + const columns = Math.floor( + (containerWidth + gap) / (previewSize + gap) + ); + return Math.max(1, columns); + }, [context.containerWidth, view.layout?.previewSize]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +var { Badge } = unlock(import_components8.privateApis); +function chunk(array, size) { + const chunks = []; + for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { + chunks.push(array.slice(i2, i2 + size)); + } + return chunks; +} +var GridItem = (0, import_element12.forwardRef)(function GridItem2({ + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config, + ...props +}, ref) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasBulkAction = useHasAPossibleBulkAction(actions, item); + const id = getItemId(item); + const instanceId = (0, import_compose4.useInstanceId)(GridItem2); + const isSelected2 = selection.includes(id); + const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); + const rendersMediaField = showMedia && mediaField?.render; + const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : mediaPlaceholder; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(titleField.render, { item, field: titleField }) : null; + let mediaA11yProps; + let titleA11yProps; + if (isItemClickable(item) && onClickItem) { + if (renderedTitleField) { + mediaA11yProps = { + "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` + }; + titleA11yProps = { + id: `dataviews-view-grid__title-field-${instanceId}` + }; + } else { + mediaA11yProps = { + "aria-label": (0, import_i18n11.__)("Navigate to item") + }; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( + Stack, + { + direction: "column", + ...props, + ref, + className: clsx_default( + props.className, + "dataviews-view-grid__row__gridcell", + "dataviews-view-grid__card", + { + "is-selected": hasBulkAction && isSelected2 + } + ), + onClickCapture: (event) => { + props.onClickCapture?.(event); + if ((0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey) { + event.stopPropagation(); + event.preventDefault(); + if (!hasBulkAction) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: clsx_default("dataviews-view-grid__media", { + "dataviews-view-grid__media--placeholder": !rendersMediaField + }), + ...mediaA11yProps, + children: renderedMediaField + } + ), + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId, + titleField, + disabled: !hasBulkAction + } + ), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemActions, { item, actions, isCompact: true }) }), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-grid__title-field dataviews-title-field", + ...titleA11yProps, + title: titleField?.getValueFormatted({ + item, + field: titleField + }) || void 0, + children: renderedTitleField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Badge, + { + className: "dataviews-view-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Flex, + { + className: "dataviews-view-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components8.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components8.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.FlexItem, + { + className: "dataviews-view-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + } + ); +}); +function CompositeGrid({ + data, + isInfiniteScroll, + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element12.useContext)(dataviews_context_default); + const gridColumns = useGridColumns(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const size = "900px"; + const totalRows = Math.ceil(data.length / gridColumns); + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite, + { + role: isInfiniteScroll ? "feed" : "grid", + className: clsx_default("dataviews-view-grid", className), + focusWrap: true, + "aria-busy": isLoading, + "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, + ref: resizeObserverRef, + children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite.Row, + { + render: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + "div", + { + role: "row", + "aria-rowindex": i2 + 1, + "aria-label": (0, import_i18n11.sprintf)( + /* translators: %d: The row number in the grid */ + (0, import_i18n11.__)("Row %d"), + i2 + 1 + ), + className: "dataviews-view-grid__row", + style: { + gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` + } + } + ), + children: row.map((item, indexInRow) => { + const index = i2 * gridColumns + indexInRow; + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite.Item, + { + render: (props) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + GridItem, + { + ...props, + role: isInfiniteScroll ? "article" : "gridcell", + "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, + "aria-posinset": isInfiniteScroll ? index + 1 : void 0, + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config: { + sizes: size + } + } + ) + }, + getItemId(item) + ); + }) + }, + i2 + )) + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +function ViewGrid({ + actions, + data, + fields, + getItemId, + isLoading, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + selection, + view, + className, + empty +}) { + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const gridProps = { + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId, + actions + }; + return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n12.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n12.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data: groupItems, + isInfiniteScroll: false + } + ) + ] + }, + groupName + ) + ) }), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components9.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components9.Spinner, {}) }) + ] + }); +} +var grid_default = ViewGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs +var import_compose5 = __toESM(require_compose(), 1); +var import_components10 = __toESM(require_components(), 1); +var import_element13 = __toESM(require_element(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); +var import_data5 = __toESM(require_data(), 1); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock(import_components10.privateApis); +function generateItemWrapperCompositeId(idPrefix) { + return `${idPrefix}-item-wrapper`; +} +function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { + return `${idPrefix}-primary-action-${primaryActionId}`; +} +function generateDropdownTriggerCompositeId(idPrefix) { + return `${idPrefix}-dropdown`; +} +function PrimaryActionGridCell({ + idPrefix, + primaryAction, + item +}) { + const registry = (0, import_data5.useRegistry)(); + const [isModalOpen, setIsModalOpen] = (0, import_element13.useState)(false); + const compositeItemId = generatePrimaryActionCompositeId( + idPrefix, + primaryAction.id + ); + const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); + return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + text: label, + size: "small", + onClick: () => setIsModalOpen(true) + } + ), + children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionModal, + { + action: primaryAction, + items: [item], + closeModal: () => setIsModalOpen(false) + } + ) + } + ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + size: "small", + onClick: () => { + primaryAction.callback([item], { registry }); + }, + children: label + } + ) + } + ) }, primaryAction.id); +} +function ListItem({ + view, + actions, + idPrefix, + isSelected: isSelected2, + item, + titleField, + mediaField, + descriptionField, + onSelect, + otherFields, + onDropdownTriggerKeyDown, + posinset +}) { + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element13.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element13.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element13.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element13.useContext)(dataviews_context_default); + (0, import_element13.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element13.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryAction: _primaryActions[0], + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; + const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "52px" } + } + ) }) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(titleField.render, { item, field: titleField }) : null; + const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + gap: "md", + className: "dataviews-view-list__item-actions", + children: [ + primaryAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + PrimaryActionGridCell, + { + idPrefix, + primaryAction, + item + } + ), + !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { role: "gridcell", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Menu3, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Menu3.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: generateDropdownTriggerCompositeId( + idPrefix + ), + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + size: "small", + icon: more_vertical_default, + label: (0, import_i18n13.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + onKeyDown: onDropdownTriggerKeyDown + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Menu3.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionsMenuGroup, + { + actions: eligibleActions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }) + ] + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Row, + { + ref: itemRef, + render: ( + /* aria-posinset breaks Composite.Row if passed to it directly. */ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 + } + ) + ), + role: infiniteScrollEnabled ? "article" : "row", + className: clsx_default({ + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleHover, + onMouseLeave: handleHover, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-view-list__item-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: generateItemWrapperCompositeId(idPrefix), + "aria-pressed": isSelected2, + "aria-labelledby": labelId, + "aria-describedby": descriptionId, + className: "dataviews-view-list__item", + onClick: () => onSelect(item) + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + gap: "md", + justify: "start", + align: "flex-start", + style: { flex: 1, minWidth: 0 }, + children: [ + renderedMediaField, + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "column", + gap: "xs", + className: "dataviews-view-list__field-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "row", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: "dataviews-title-field dataviews-view-list__title-field", + id: labelId, + children: renderedTitleField + } + ), + usedActions + ] }), + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: "dataviews-view-list__fields", + id: descriptionId, + children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + "div", + { + className: "dataviews-view-list__field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.VisuallyHidden, + { + as: "span", + className: "dataviews-view-list__field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) + } + ) + ] + } + ) + ] + } + ) + ] + } + ) + } + ); +} +function isDefined2(item) { + return !!item; +} +function ViewList(props) { + const { + actions, + data, + fields, + getItemId, + isLoading, + onChangeSelection, + selection, + view, + className, + empty + } = props; + const baseId = (0, import_compose5.useInstanceId)(ViewList, "view-list"); + const selectedItem = data?.findLast( + (item) => selection.includes(getItemId(item)) + ); + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); + const onSelect = (item) => onChangeSelection([getItemId(item)]); + const generateCompositeItemIdPrefix = (0, import_element13.useCallback)( + (item) => `${baseId}-${getItemId(item)}`, + [baseId, getItemId] + ); + const isActiveCompositeItem = (0, import_element13.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element13.useState)(void 0); + (0, import_element13.useEffect)(() => { + if (selectedItem) { + setActiveCompositeId( + generateItemWrapperCompositeId( + generateCompositeItemIdPrefix(selectedItem) + ) + ); + } + }, [selectedItem, generateCompositeItemIdPrefix]); + const activeItemIndex = data.findIndex( + (item) => isActiveCompositeItem(item, activeCompositeId ?? "") + ); + const previousActiveItemIndex = (0, import_compose5.usePrevious)(activeItemIndex); + const isActiveIdInList = activeItemIndex !== -1; + const selectCompositeItem = (0, import_element13.useCallback)( + (targetIndex, generateCompositeId) => { + const clampedIndex = Math.min( + data.length - 1, + Math.max(0, targetIndex) + ); + if (!data[clampedIndex]) { + return; + } + const itemIdPrefix = generateCompositeItemIdPrefix( + data[clampedIndex] + ); + const targetCompositeItemId = generateCompositeId(itemIdPrefix); + setActiveCompositeId(targetCompositeItemId); + document.getElementById(targetCompositeItemId)?.focus(); + }, + [data, generateCompositeItemIdPrefix] + ); + (0, import_element13.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element13.useCallback)( + (event) => { + if (event.key === "ArrowDown") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex + 1, + generateDropdownTriggerCompositeId + ); + } + if (event.key === "ArrowUp") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex - 1, + generateDropdownTriggerCompositeId + ); + } + }, + [selectCompositeItem, activeItemIndex] + ); + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components10.Spinner, {}) }) : empty) + } + ); + } + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite, + { + id: `${baseId}`, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", {}), + className: "dataviews-view-list__group", + role: "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Stack, + { + direction: "column", + gap: "lg", + className: clsx_default("dataviews-view-list", className), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n13.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n13.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + groupItems.map((item) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown + }, + id + ); + }) + ] + }, + groupName + ) + ) + } + ) + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite, + { + id: baseId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", {}), + className: clsx_default("dataviews-view-list", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: data.map((item, index) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + }, + id + ); + }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components10.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_components12 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs +var import_i18n14 = __toESM(require_i18n(), 1); +var import_element14 = __toESM(require_element(), 1); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +function ActivityGroup({ + groupName, + groupData, + groupField, + showLabel = true, + children +}) { + const groupHeader = showLabel ? (0, import_element14.createInterpolateElement)( + // translators: %s: The label of the field e.g. "Status". + (0, import_i18n14.sprintf)((0, import_i18n14.__)("%s: "), groupField.label).trim(), + { + groupName: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + groupField.render, + { + item: groupData[0], + field: groupField + } + ) + } + ) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(groupField.render, { item: groupData[0], field: groupField }); + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-activity__group", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), + children + ] + }, + groupName + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs +var import_components11 = __toESM(require_components(), 1); +var import_element15 = __toESM(require_element(), 1); +var import_data6 = __toESM(require_data(), 1); +var import_compose6 = __toESM(require_compose(), 1); +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +function ActivityItem(props) { + const { + view, + actions, + item, + titleField, + mediaField, + descriptionField, + otherFields, + posinset, + onClickItem, + renderItemLink, + isItemClickable + } = props; + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element15.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element15.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element15.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose6.useViewportMatch)("medium", "<"); + const density = view.layout?.density ?? "balanced"; + const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { + sizes: density === "comfortable" ? "32px" : "24px" + } + } + ) : null; + const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + "span", + { + className: "dataviews-view-activity__item-bullet", + "aria-hidden": "true" + } + ) }); + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(titleField.render, { item, field: titleField }) : null; + const verticalGap = (0, import_element15.useMemo)(() => { + switch (density) { + case "comfortable": + return "md"; + default: + return "sm"; + } + }, [density]); + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + "div", + { + ref: itemRef, + role: infiniteScrollEnabled ? "article" : void 0, + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + className: clsx_default( + "dataviews-view-activity__item", + density === "compact" && "is-compact", + density === "balanced" && "is-balanced", + density === "comfortable" && "is-comfortable" + ), + children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + Stack, + { + direction: "column", + gap: "xs", + align: "center", + className: "dataviews-view-activity__item-type", + children: renderedMediaField + } + ), + /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( + Stack, + { + direction: "column", + gap: verticalGap, + align: "flex-start", + className: "dataviews-view-activity__item-content", + children: [ + renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-activity__item-title", + children: renderedTitleField + } + ), + showDescription && descriptionField && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( + "div", + { + className: "dataviews-view-activity__item-field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components11.VisuallyHidden, + { + as: "span", + className: "dataviews-view-activity__item-field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) }), + !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry, + buttonVariant: "secondary" + } + ) + ] + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport && // At the same time, only show the menu if there are actions to show. + eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemActions, + { + item, + actions: eligibleActions, + isCompact: true + } + ) }) + ] }) + } + ); +} +var activity_item_default = ActivityItem; + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs +var import_react3 = __toESM(require_react(), 1); +function isDefined3(item) { + return !!item; +} +function ActivityItems(props) { + const { data, fields, getItemId, view } = props; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); + return data.map((item, index) => { + return /* @__PURE__ */ (0, import_react3.createElement)( + activity_item_default, + { + ...props, + key: getItemId(item), + item, + mediaField, + titleField, + descriptionField, + otherFields, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + } + ); + }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); +function ViewActivity(props) { + const { empty, data, fields, isLoading, view, className } = props; + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components12.Spinner, {}) }) : empty) + } + ); + } + const wrapperClassName = clsx_default("dataviews-view-activity", className); + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Stack, { direction: "column", gap: "sm", className: wrapperClassName, children: groupedEntries.map( + ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ActivityGroup, + { + groupName, + groupData, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ActivityItems, + { + ...props, + data: groupData + } + ) + }, + groupName + ) + ) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: wrapperClassName, + role: view.infiniteScrollEnabled ? "feed" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActivityItems, { ...props }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components12.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_components15 = __toESM(require_components(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); +var import_compose7 = __toESM(require_compose(), 1); +var import_element19 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_components14 = __toESM(require_components(), 1); +var import_data7 = __toESM(require_data(), 1); +var import_element17 = __toESM(require_element(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-pagination/index.mjs +var import_components13 = __toESM(require_components(), 1); +var import_element16 = __toESM(require_element(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +function DataViewsPagination() { + const { + view, + onChangeView, + paginationInfo: { totalItems = 0, totalPages } + } = (0, import_element16.useContext)(dataviews_context_default); + if (!totalItems || !totalPages || view.infiniteScrollEnabled) { + return null; + } + const currentPage = view.page ?? 1; + const pageSelectOptions = Array.from(Array(totalPages)).map( + (_, i2) => { + const page = i2 + 1; + return { + value: page.toString(), + label: page.toString(), + "aria-label": currentPage === page ? (0, import_i18n15.sprintf)( + // translators: 1: current page number. 2: total number of pages. + (0, import_i18n15.__)("Page %1$d of %2$d"), + currentPage, + totalPages + ) : page.toString() + }; + } + ); + return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-pagination", + justify: "end", + align: "center", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + align: "center", + gap: "xs", + className: "dataviews-pagination__page-select", + children: (0, import_element16.createInterpolateElement)( + (0, import_i18n15.sprintf)( + // translators: 1: Current page number, 2: Total number of pages. + (0, import_i18n15._x)( + "
      Page
      %1$s
      of %2$d
      ", + "paging" + ), + "", + totalPages + ), + { + div: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { "aria-hidden": true }), + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.SelectControl, + { + "aria-label": (0, import_i18n15.__)("Current page"), + value: currentPage.toString(), + options: pageSelectOptions, + onChange: (newValue) => { + onChangeView({ + ...view, + page: +newValue + }); + }, + size: "small", + variant: "minimal" + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ + ...view, + page: currentPage - 1 + }), + disabled: currentPage === 1, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Previous page"), + icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ ...view, page: currentPage + 1 }), + disabled: currentPage >= totalPages, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Next page"), + icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ) + ] }) + ] + } + ); +} +var dataviews_pagination_default = (0, import_element16.memo)(DataViewsPagination); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +function useIsMultiselectPicker(actions) { + return (0, import_element17.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element18.forwardRef)(({ className, previewSize, ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + "div", + { + ref, + className: clsx_default("dataviews-view-grid-items", className), + style: { + gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` + }, + ...props + } + ); +}); + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +var { Badge: Badge2 } = unlock(import_components15.privateApis); +function GridItem3({ + view, + multiselect, + selection, + onChangeSelection, + getItemId, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config, + posinset, + setsize +}) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const id = getItemId(item); + const isSelected2 = selection.includes(id); + const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(titleField.render, { item, field: titleField }) : null; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + import_components15.Composite.Item, + { + "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n17.__)("(no title)") : void 0, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Stack, { direction: "column", children, ...props }), + role: "option", + "aria-posinset": posinset, + "aria-setsize": setsize, + className: clsx_default("dataviews-view-picker-grid__card", { + "is-selected": isSelected2 + }), + "aria-selected": isSelected2, + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "row", + justify: "space-between", + className: "dataviews-view-picker-grid__title-actions", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-picker-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Badge2, + { + className: "dataviews-view-picker-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-picker-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Flex, + { + className: "dataviews-view-picker-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.FlexItem, + { + className: "dataviews-view-picker-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + }, + id + ); +} +function GridGroup({ + groupName, + groupField, + showLabel = true, + children +}) { + const headerId = (0, import_compose7.useInstanceId)( + GridGroup, + "dataviews-view-picker-grid-group__header" + ); + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + role: "group", + "aria-labelledby": headerId, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "h3", + { + className: "dataviews-view-picker-grid-group__header", + id: headerId, + children: showLabel ? (0, import_i18n17.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n17.__)("%1$s: %2$s"), + groupField.label, + groupName + ) : groupName + } + ), + children + ] + }, + groupName + ); +} +function ViewPickerGrid({ + actions, + data, + fields, + getItemId, + isLoading, + onChangeSelection, + selection, + view, + className, + empty +}) { + const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element19.useContext)(dataviews_context_default); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const hasData = !!data?.length; + const usedPreviewSize = view.layout?.previewSize; + const isMultiselect = useIsMultiselectPicker(actions); + const size = "900px"; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const currentPage = view?.page ?? 1; + const perPage = view?.perPage ?? 0; + const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Composite, + { + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + "aria-label": itemListLabel, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "column", + gap: "lg", + children, + ...props + } + ), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridGroup, + { + groupName, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItems, + { + previewSize: usedPreviewSize, + style: { + gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` + }, + "aria-busy": isLoading, + ref: resizeObserverRef, + children: groupItems.map((item) => { + const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset: posInSet, + setsize: setSize + }, + getItemId(item) + ); + }) + } + ) + }, + groupName + ) + ) + } + ), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItems, + { + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + previewSize: usedPreviewSize, + "aria-busy": isLoading, + ref: resizeObserverRef + } + ), + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + "aria-label": itemListLabel, + children: data.map((item, index) => { + let posinset = isInfiniteScroll ? index + 1 : void 0; + if (!isInfiniteScroll) { + posinset = (currentPage - 1) * perPage + index + 1; + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset, + setsize: setSize + }, + getItemId(item) + ); + }) + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.Spinner, {}) }) + ] + }); +} +var picker_grid_default = ViewPickerGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs +var import_i18n18 = __toESM(require_i18n(), 1); +var import_components16 = __toESM(require_components(), 1); +var import_element20 = __toESM(require_element(), 1); +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); +function TableColumnField2({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(field.render, { item, field }) }); +} +function TableRow2({ + item, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + onChangeSelection, + multiselect, + posinset +}) { + const { paginationInfo } = (0, import_element20.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element20.useState)(false); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const handleMouseEnter = () => { + setIsHovered(true); + }; + const handleMouseLeave = () => { + setIsHovered(false); + }; + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + import_components16.Composite.Item, + { + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, + children, + ...props + } + ), + "aria-selected": isSelected2, + "aria-setsize": paginationInfo.totalItems || void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : "option", + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + className: "dataviews-view-table__checkbox-column", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ) }) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_primary_default, + { + item, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable: () => false + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableColumnField2, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }) + ] + }, + id + ); +} +function ViewPickerTable({ + actions, + data, + fields, + getItemId, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + view, + className, + empty +}) { + const headerMenuRefs = (0, import_element20.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element20.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element20.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element20.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element20.useId)(); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "table", + { + className: clsx_default( + "dataviews-view-table", + "dataviews-view-picker-table", + className, + { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + } + ), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : "listbox", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "tr", + { + className: "dataviews-view-table__row", + role: "presentation", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId + } + ) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: view.layout?.enableMoving ?? true + } + ) + }, + column + ); + }) + ] + } + ) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + import_components16.Composite, + { + virtualFocus: true, + orientation: "vertical", + render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tbody", { role: "group" }), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "tr", + { + className: "dataviews-view-table__group-header-row", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, + className: "dataviews-view-table__group-header-cell", + role: "presentation", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n18.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n18.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) + } + ), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableRow2, + { + item, + fields, + id: getItemId(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + onChangeSelection, + multiselect: isMultiselect + }, + getItemId(item) + )) + ] + }, + `group-${groupName}` + ) + ) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components16.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tbody", { role: "presentation" }), + virtualFocus: true, + orientation: "vertical", + children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableRow2, + { + item, + fields, + id: getItemId(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId, + onChangeSelection, + multiselect: isMultiselect, + posinset: index + 1 + }, + getItemId(item) + )) + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components16.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components16.Spinner, {}) }) + ] + } + ) + ] }); +} +var picker_table_default = ViewPickerTable; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs +var import_components17 = __toESM(require_components(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); +var import_element21 = __toESM(require_element(), 1); +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +var imageSizes2 = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +function PreviewSizePicker() { + const context = (0, import_element21.useContext)(dataviews_context_default); + const view = context.view; + const breakValues = imageSizes2.filter((size) => { + return context.containerWidth >= size.breakpoint; + }); + const layoutPreviewSize = view.layout?.previewSize ?? 230; + const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; + const marks = breakValues.map((size, index) => { + return { + value: index + }; + }); + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components17.RangeControl, + { + __next40pxDefaultSize: true, + showTooltip: false, + label: (0, import_i18n19.__)("Preview size"), + value: previewSizeToUse, + min: 0, + max: breakValues.length - 1, + withInputField: false, + onChange: (value = 0) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + previewSize: breakValues[value].value + } + }); + }, + step: 1, + marks + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs +var import_components18 = __toESM(require_components(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element22.useContext)(dataviews_context_default); + const view = context.view; + return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( + import_components18.__experimentalToggleGroupControl, + { + size: "__unstable-large", + label: (0, import_i18n20.__)("Density"), + value: view.layout?.density || "balanced", + onChange: (value) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + density: value + } + }); + }, + isBlock: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "comfortable", + label: (0, import_i18n20._x)( + "Comfortable", + "Density option for DataView layout" + ) + }, + "comfortable" + ), + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "balanced", + label: (0, import_i18n20._x)("Balanced", "Density option for DataView layout") + }, + "balanced" + ), + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "compact", + label: (0, import_i18n20._x)("Compact", "Density option for DataView layout") + }, + "compact" + ) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var VIEW_LAYOUTS = [ + { + type: LAYOUT_TABLE, + label: (0, import_i18n21.__)("Table"), + component: table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_GRID, + label: (0, import_i18n21.__)("Grid"), + component: grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker + }, + { + type: LAYOUT_LIST, + label: (0, import_i18n21.__)("List"), + component: ViewList, + icon: (0, import_i18n21.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_ACTIVITY, + label: (0, import_i18n21.__)("Activity"), + component: ViewActivity, + icon: scheduled_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_PICKER_GRID, + label: (0, import_i18n21.__)("Grid"), + component: picker_grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker, + isPicker: true + }, + { + type: LAYOUT_PICKER_TABLE, + label: (0, import_i18n21.__)("Table"), + component: picker_table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker, + isPicker: true + } +]; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_element30 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_components21 = __toESM(require_components(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); +var import_element27 = __toESM(require_element(), 1); + +// node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp2.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b2)) { + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js +var __defProp3 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __hasOwnProp3 = Object.prototype.hasOwnProperty; +var __propIsEnum2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues2 = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp3.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + if (__getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(b2)) { + if (__propIsEnum2.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps2 = (a2, b2) => __defProps2(a2, __getOwnPropDescs2(b2)); +var __objRest2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js +function noop(..._) { +} +function applyState(argument, currentValue) { + if (isUpdater(argument)) { + const value = isLazyValue(currentValue) ? currentValue() : currentValue; + return argument(value); + } + return argument; +} +function isUpdater(argument) { + return typeof argument === "function"; +} +function isLazyValue(value) { + return typeof value === "function"; +} +function hasOwnProperty(object, prop) { + if (typeof Object.hasOwn === "function") { + return Object.hasOwn(object, prop); + } + return Object.prototype.hasOwnProperty.call(object, prop); +} +function chain(...fns) { + return (...args) => { + for (const fn of fns) { + if (typeof fn === "function") { + fn(...args); + } + } + }; +} +function normalizeString(str) { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); +} +function omit2(object, keys) { + const result = __spreadValues2({}, object); + for (const key of keys) { + if (hasOwnProperty(result, key)) { + delete result[key]; + } + } + return result; +} +function pick(object, paths) { + const result = {}; + for (const key of paths) { + if (hasOwnProperty(object, key)) { + result[key] = object[key]; + } + } + return result; +} +function identity(value) { + return value; +} +function invariant(condition, message2) { + if (condition) return; + if (typeof message2 !== "string") throw new Error("Invariant failed"); + throw new Error(message2); +} +function getKeys(obj) { + return Object.keys(obj); +} +function isFalsyBooleanCallback(booleanOrCallback, ...args) { + const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; + if (result == null) return false; + return !result; +} +function disabledFromProps(props) { + return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; +} +function removeUndefinedValues(obj) { + const result = {}; + for (const key in obj) { + if (obj[key] !== void 0) { + result[key] = obj[key]; + } + } + return result; +} +function defaultValue(...values) { + for (const value of values) { + if (value !== void 0) return value; + } + return void 0; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js +var import_react4 = __toESM(require_react(), 1); +function setRef(ref, value) { + if (typeof ref === "function") { + ref(value); + } else if (ref) { + ref.current = value; + } +} +function isValidElementWithRef(element) { + if (!element) return false; + if (!(0, import_react4.isValidElement)(element)) return false; + if ("ref" in element.props) return true; + if ("ref" in element) return true; + return false; +} +function getRefProperty(element) { + if (!isValidElementWithRef(element)) return null; + const props = __spreadValues({}, element.props); + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = __spreadValues({}, base); + for (const key in overrides) { + if (!hasOwnProperty(overrides, key)) continue; + if (key === "className") { + const prop = "className"; + props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; + continue; + } + if (key === "style") { + const prop = "style"; + props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; + continue; + } + const overrideValue = overrides[key]; + if (typeof overrideValue === "function" && key.startsWith("on")) { + const baseValue = base[key]; + if (typeof baseValue === "function") { + props[key] = (...args) => { + overrideValue(...args); + baseValue(...args); + }; + continue; + } + } + props[key] = overrideValue; + } + return props; +} + +// node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js +var canUseDOM = checkIsBrowser(); +function checkIsBrowser() { + var _a; + return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); +} +function getDocument(node) { + if (!node) return document; + if ("self" in node) return node.document; + return node.ownerDocument || document; +} +function getActiveElement(node, activeDescendant = false) { + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && activeElement.contentDocument) { + return getActiveElement( + activeElement.contentDocument.body, + activeDescendant + ); + } + if (activeDescendant) { + const id = activeElement.getAttribute("aria-activedescendant"); + if (id) { + const element = getDocument(activeElement).getElementById(id); + if (element) { + return element; + } + } + } + return activeElement; +} +function contains(parent, child) { + return parent === child || parent.contains(child); +} +function isFrame(element) { + return element.tagName === "IFRAME"; +} +function isButton(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "button") return true; + if (tagName === "input" && element.type) { + return buttonInputTypes.indexOf(element.type) !== -1; + } + return false; +} +var buttonInputTypes = [ + "button", + "color", + "file", + "image", + "reset", + "submit" +]; +function isVisible(element) { + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + const htmlElement = element; + return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; +} +function isTextField(element) { + try { + const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; + const isTextArea = element.tagName === "TEXTAREA"; + return isTextInput || isTextArea || false; + } catch (error) { + return false; + } +} +function isTextbox(element) { + return element.isContentEditable || isTextField(element); +} +function getTextboxValue(element) { + if (isTextField(element)) { + return element.value; + } + if (element.isContentEditable) { + const range = getDocument(element).createRange(); + range.selectNodeContents(element); + return range.toString(); + } + return ""; +} +function getTextboxSelection(element) { + let start = 0; + let end = 0; + if (isTextField(element)) { + start = element.selectionStart || 0; + end = element.selectionEnd || 0; + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { + const range = selection.getRangeAt(0); + const nextRange = range.cloneRange(); + nextRange.selectNodeContents(element); + nextRange.setEnd(range.startContainer, range.startOffset); + start = nextRange.toString().length; + nextRange.setEnd(range.endContainer, range.endOffset); + end = nextRange.toString().length; + } + } + return { start, end }; +} +function getPopupRole(element, fallback) { + const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; + const role = element == null ? void 0 : element.getAttribute("role"); + if (role && allowedPopupRoles.indexOf(role) !== -1) { + return role; + } + return fallback; +} +function getScrollingElement(element) { + if (!element) return null; + const isScrollableOverflow = (overflow) => { + if (overflow === "auto") return true; + if (overflow === "scroll") return true; + return false; + }; + if (element.clientHeight && element.scrollHeight > element.clientHeight) { + const { overflowY } = getComputedStyle(element); + if (isScrollableOverflow(overflowY)) return element; + } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { + const { overflowX } = getComputedStyle(element); + if (isScrollableOverflow(overflowX)) return element; + } + return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; +} +function setSelectionRange(element, ...args) { + if (/text|search|password|tel|url/i.test(element.type)) { + element.setSelectionRange(...args); + } +} +function sortBasedOnDOMPosition(items, getElement) { + const pairs = items.map((item, index) => [index, item]); + let isOrderDifferent = false; + pairs.sort(([indexA, a2], [indexB, b2]) => { + const elementA = getElement(a2); + const elementB = getElement(b2); + if (elementA === elementB) return 0; + if (!elementA || !elementB) return 0; + if (isElementPreceding(elementA, elementB)) { + if (indexA > indexB) { + isOrderDifferent = true; + } + return -1; + } + if (indexA < indexB) { + isOrderDifferent = true; + } + return 1; + }); + if (isOrderDifferent) { + return pairs.map(([_, item]) => item); + } + return items; +} +function isElementPreceding(a2, b2) { + return Boolean( + b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING + ); +} + +// node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js +function isTouchDevice() { + return canUseDOM && !!navigator.maxTouchPoints; +} +function isApple() { + if (!canUseDOM) return false; + return /mac|iphone|ipad|ipod/i.test(navigator.platform); +} +function isSafari() { + return canUseDOM && isApple() && /apple/i.test(navigator.vendor); +} +function isFirefox() { + return canUseDOM && /firefox\//i.test(navigator.userAgent); +} + +// node_modules/@ariakit/core/esm/utils/events.js +function isPortalEvent(event) { + return Boolean( + event.currentTarget && !contains(event.currentTarget, event.target) + ); +} +function isSelfTarget(event) { + return event.target === event.currentTarget; +} +function isOpeningInNewTab(event) { + const element = event.currentTarget; + if (!element) return false; + const isAppleDevice = isApple(); + if (isAppleDevice && !event.metaKey) return false; + if (!isAppleDevice && !event.ctrlKey) return false; + const tagName = element.tagName.toLowerCase(); + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function isDownloading(event) { + const element = event.currentTarget; + if (!element) return false; + const tagName = element.tagName.toLowerCase(); + if (!event.altKey) return false; + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function fireBlurEvent(element, eventInit) { + const event = new FocusEvent("blur", eventInit); + const defaultAllowed = element.dispatchEvent(event); + const bubbleInit = __spreadProps2(__spreadValues2({}, eventInit), { bubbles: true }); + element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); + return defaultAllowed; +} +function fireKeyboardEvent(element, type, eventInit) { + const event = new KeyboardEvent(type, eventInit); + return element.dispatchEvent(event); +} +function fireClickEvent(element, eventInit) { + const event = new MouseEvent("click", eventInit); + return element.dispatchEvent(event); +} +function isFocusEventOutside(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function queueBeforeEvent(element, type, callback, timeout) { + const createTimer = (callback2) => { + if (timeout) { + const timerId2 = setTimeout(callback2, timeout); + return () => clearTimeout(timerId2); + } + const timerId = requestAnimationFrame(callback2); + return () => cancelAnimationFrame(timerId); + }; + const cancelTimer = createTimer(() => { + element.removeEventListener(type, callSync, true); + callback(); + }); + const callSync = () => { + cancelTimer(); + callback(); + }; + element.addEventListener(type, callSync, { once: true, capture: true }); + return cancelTimer; +} +function addGlobalEventListener(type, listener, options, scope = window) { + const children = []; + try { + scope.document.addEventListener(type, listener, options); + for (const frame of Array.from(scope.frames)) { + children.push(addGlobalEventListener(type, listener, options, frame)); + } + } catch (e2) { + } + const removeEventListener = () => { + try { + scope.document.removeEventListener(type, listener, options); + } catch (e2) { + } + for (const remove of children) { + remove(); + } + }; + return removeEventListener; +} + +// node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js +var import_react5 = __toESM(require_react(), 1); +var React6 = __toESM(require_react(), 1); +var _React = __spreadValues({}, React6); +var useReactId = _React.useId; +var useReactDeferredValue = _React.useDeferredValue; +var useReactInsertionEffect = _React.useInsertionEffect; +var useSafeLayoutEffect = canUseDOM ? import_react5.useLayoutEffect : import_react5.useEffect; +function useInitialValue(value) { + const [initialValue] = (0, import_react5.useState)(value); + return initialValue; +} +function useLiveRef(value) { + const ref = (0, import_react5.useRef)(value); + useSafeLayoutEffect(() => { + ref.current = value; + }); + return ref; +} +function useEvent(callback) { + const ref = (0, import_react5.useRef)(() => { + throw new Error("Cannot call an event handler while rendering."); + }); + if (useReactInsertionEffect) { + useReactInsertionEffect(() => { + ref.current = callback; + }); + } else { + ref.current = callback; + } + return (0, import_react5.useCallback)((...args) => { + var _a; + return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); + }, []); +} +function useTransactionState(callback) { + const [state, setState] = (0, import_react5.useState)(null); + useSafeLayoutEffect(() => { + if (state == null) return; + if (!callback) return; + let prevState = null; + callback((prev) => { + prevState = prev; + return state; + }); + return () => { + callback(prevState); + }; + }, [state, callback]); + return [state, setState]; +} +function useMergeRefs(...refs) { + return (0, import_react5.useMemo)(() => { + if (!refs.some(Boolean)) return; + return (value) => { + for (const ref of refs) { + setRef(ref, value); + } + }; + }, refs); +} +function useId3(defaultId) { + if (useReactId) { + const reactId = useReactId(); + if (defaultId) return defaultId; + return reactId; + } + const [id, setId] = (0, import_react5.useState)(defaultId); + useSafeLayoutEffect(() => { + if (defaultId || id) return; + const random = Math.random().toString(36).slice(2, 8); + setId(`id-${random}`); + }, [defaultId, id]); + return defaultId || id; +} +function useTagName(refOrElement, type) { + const stringOrUndefined = (type2) => { + if (typeof type2 !== "string") return; + return type2; + }; + const [tagName, setTagName] = (0, import_react5.useState)(() => stringOrUndefined(type)); + useSafeLayoutEffect(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); + }, [refOrElement, type]); + return tagName; +} +function useAttribute(refOrElement, attributeName, defaultValue2) { + const initialValue = useInitialValue(defaultValue2); + const [attribute, setAttribute] = (0, import_react5.useState)(initialValue); + (0, import_react5.useEffect)(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + if (!element) return; + const callback = () => { + const value = element.getAttribute(attributeName); + setAttribute(value == null ? initialValue : value); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { attributeFilter: [attributeName] }); + callback(); + return () => observer.disconnect(); + }, [refOrElement, attributeName, initialValue]); + return attribute; +} +function useUpdateEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + (0, import_react5.useEffect)(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + (0, import_react5.useEffect)( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useUpdateLayoutEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + useSafeLayoutEffect(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + useSafeLayoutEffect( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useForceUpdate() { + return (0, import_react5.useReducer)(() => [], []); +} +function useBooleanEvent(booleanOrCallback) { + return useEvent( + typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback + ); +} +function useWrapElement(props, callback, deps = []) { + const wrapElement = (0, import_react5.useCallback)( + (element) => { + if (props.wrapElement) { + element = props.wrapElement(element); + } + return callback(element); + }, + [...deps, props.wrapElement] + ); + return __spreadProps(__spreadValues({}, props), { wrapElement }); +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, __spreadProps(__spreadValues({}, parent), { [key]: value })); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + }, []); + const isMouseMoving = useEvent(() => mouseMoving); + return isMouseMoving; +} +var mouseMoving = false; +var previousScreenX = 0; +var previousScreenY = 0; +function hasMouseMovement(event) { + const movementX = event.movementX || event.screenX - previousScreenX; + const movementY = event.movementY || event.screenY - previousScreenY; + previousScreenX = event.screenX; + previousScreenY = event.screenY; + return movementX || movementY || false; +} +function setMouseMoving(event) { + if (!hasMouseMovement(event)) return; + mouseMoving = true; +} +function resetMouseMoving() { + mouseMoving = false; +} + +// node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef((props, ref) => render4(__spreadProps(__spreadValues({}, props), { ref }))); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const _a = props, { wrapElement, render: render4 } = _a, rest = __objRest(_a, ["wrapElement", "render"]); + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = __spreadProps(__spreadValues({}, render4.props), { ref: mergedRef }); + element = React7.cloneElement(render4, mergeProps2(rest, renderProps)); + } else if (render4) { + element = render4(rest); + } else { + element = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Type, __spreadValues({}, rest)); + } + if (wrapElement) { + return wrapElement(element); + } + return element; +} +function createHook(useProps) { + const useRole = (props = {}) => { + return useProps(props); + }; + useRole.displayName = useProps.name; + return useRole; +} +function createStoreContext(providers = [], scopedProviders = []) { + const context = React7.createContext(void 0); + const scopedContext = React7.createContext(void 0); + const useContext28 = () => React7.useContext(context); + const useScopedContext = (onlyScoped = false) => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (onlyScoped) return scoped; + return scoped || store; + }; + const useProviderContext = () => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (scoped && scoped === store) return; + return store; + }; + const ContextProvider = (props) => { + return providers.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(context.Provider, __spreadValues({}, props)) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(scopedContext.Provider, __spreadValues({}, props)) + ) })); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js +var ctx = createStoreContext(); +var useCollectionContext = ctx.useContext; +var useCollectionScopedContext = ctx.useScopedContext; +var useCollectionProviderContext = ctx.useProviderContext; +var CollectionContextProvider = ctx.ContextProvider; +var CollectionScopedContextProvider = ctx.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js +var import_react6 = __toESM(require_react(), 1); +var ctx2 = createStoreContext( + [CollectionContextProvider], + [CollectionScopedContextProvider] +); +var useCompositeContext = ctx2.useContext; +var useCompositeScopedContext = ctx2.useScopedContext; +var useCompositeProviderContext = ctx2.useProviderContext; +var CompositeContextProvider = ctx2.ContextProvider; +var CompositeScopedContextProvider = ctx2.ScopedContextProvider; +var CompositeItemContext = (0, import_react6.createContext)( + void 0 +); +var CompositeRowContext = (0, import_react6.createContext)( + void 0 +); + +// node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js +var import_react7 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react7.createContext)(null); +var TagRemoveIdContext = (0, import_react7.createContext)( + null +); +var ctx3 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx3.useContext; +var useTagScopedContext = ctx3.useScopedContext; +var useTagProviderContext = ctx3.useProviderContext; +var TagContextProvider = ctx3.ContextProvider; +var TagScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js +function getInternal(store, key) { + const internals = store.__unstableInternals; + invariant(internals, "Invalid store"); + return internals[key]; +} +function createStore(initialState, ...stores) { + let state = initialState; + let prevStateBatch = state; + let lastUpdate = /* @__PURE__ */ Symbol(); + let destroy = noop; + const instances = /* @__PURE__ */ new Set(); + const updatedKeys = /* @__PURE__ */ new Set(); + const setups = /* @__PURE__ */ new Set(); + const listeners = /* @__PURE__ */ new Set(); + const batchListeners = /* @__PURE__ */ new Set(); + const disposables = /* @__PURE__ */ new WeakMap(); + const listenerKeys = /* @__PURE__ */ new WeakMap(); + const storeSetup = (callback) => { + setups.add(callback); + return () => setups.delete(callback); + }; + const storeInit = () => { + const initialized = instances.size; + const instance = /* @__PURE__ */ Symbol(); + instances.add(instance); + const maybeDestroy = () => { + instances.delete(instance); + if (instances.size) return; + destroy(); + }; + if (initialized) return maybeDestroy; + const desyncs = getKeys(state).map( + (key) => chain( + ...stores.map((store) => { + var _a; + const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); + if (!storeState) return; + if (!hasOwnProperty(storeState, key)) return; + return sync(store, [key], (state2) => { + setState( + key, + state2[key], + // @ts-expect-error - Not public API. This is just to prevent + // infinite loops. + true + ); + }); + }) + ) + ); + const teardowns = []; + for (const setup2 of setups) { + teardowns.push(setup2()); + } + const cleanups = stores.map(init); + destroy = chain(...desyncs, ...teardowns, ...cleanups); + return maybeDestroy; + }; + const sub = (keys, listener, set = listeners) => { + set.add(listener); + listenerKeys.set(listener, keys); + return () => { + var _a; + (_a = disposables.get(listener)) == null ? void 0 : _a(); + disposables.delete(listener); + listenerKeys.delete(listener); + set.delete(listener); + }; + }; + const storeSubscribe = (keys, listener) => sub(keys, listener); + const storeSync = (keys, listener) => { + disposables.set(listener, listener(state, state)); + return sub(keys, listener); + }; + const storeBatch = (keys, listener) => { + disposables.set(listener, listener(state, prevStateBatch)); + return sub(keys, listener, batchListeners); + }; + const storePick = (keys) => createStore(pick(state, keys), finalStore); + const storeOmit = (keys) => createStore(omit2(state, keys), finalStore); + const getState = () => state; + const setState = (key, value, fromStores = false) => { + var _a; + if (!hasOwnProperty(state, key)) return; + const nextValue = applyState(value, state[key]); + if (nextValue === state[key]) return; + if (!fromStores) { + for (const store of stores) { + (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); + } + } + const prevState = state; + state = __spreadProps2(__spreadValues2({}, state), { [key]: nextValue }); + const thisUpdate = /* @__PURE__ */ Symbol(); + lastUpdate = thisUpdate; + updatedKeys.add(key); + const run = (listener, prev, uKeys) => { + var _a2; + const keys = listenerKeys.get(listener); + const updated = (k) => uKeys ? uKeys.has(k) : k === key; + if (!keys || keys.some(updated)) { + (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); + disposables.set(listener, listener(state, prev)); + } + }; + for (const listener of listeners) { + run(listener, prevState); + } + queueMicrotask(() => { + if (lastUpdate !== thisUpdate) return; + const snapshot = state; + for (const listener of batchListeners) { + run(listener, prevStateBatch, updatedKeys); + } + prevStateBatch = snapshot; + updatedKeys.clear(); + }); + }; + const finalStore = { + getState, + setState, + __unstableInternals: { + setup: storeSetup, + init: storeInit, + subscribe: storeSubscribe, + sync: storeSync, + batch: storeBatch, + pick: storePick, + omit: storeOmit + } + }; + return finalStore; +} +function setup(store, ...args) { + if (!store) return; + return getInternal(store, "setup")(...args); +} +function init(store, ...args) { + if (!store) return; + return getInternal(store, "init")(...args); +} +function subscribe(store, ...args) { + if (!store) return; + return getInternal(store, "subscribe")(...args); +} +function sync(store, ...args) { + if (!store) return; + return getInternal(store, "sync")(...args); +} +function batch(store, ...args) { + if (!store) return; + return getInternal(store, "batch")(...args); +} +function omit22(store, ...args) { + if (!store) return; + return getInternal(store, "omit")(...args); +} +function pick2(store, ...args) { + if (!store) return; + return getInternal(store, "pick")(...args); +} +function mergeStore(...stores) { + const initialState = stores.reduce((state, store2) => { + var _a; + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (!nextState) return state; + return Object.assign(state, nextState); + }, {}); + const store = createStore(initialState, ...stores); + return Object.assign({}, ...stores, store); +} +function throwOnConflictingProps(props, store) { + if (false) return; + if (!store) return; + const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { + var _a; + const stateKey = key.replace("default", ""); + return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; + }); + if (!defaultKeys.length) return; + const storeState = store.getState(); + const conflictingProps = defaultKeys.filter( + (key) => hasOwnProperty(storeState, key) + ); + if (!conflictingProps.length) return; + throw new Error( + `Passing a store prop in conjunction with a default state is not supported. + +const store = useSelectStore(); + + ^ ^ + +Instead, pass the default state to the topmost store: + +const store = useSelectStore({ defaultValue: "Apple" }); + + +See https://github.com/ariakit/ariakit/pull/2745 for more details. + +If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit +` + ); +} + +// node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js +var React8 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var { useSyncExternalStore } = import_shim.default; +var noopSubscribe = () => () => { +}; +function useStoreState(store, keyOrSelector = identity) { + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const key = typeof keyOrSelector === "string" ? keyOrSelector : null; + const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; + const state = store == null ? void 0 : store.getState(); + if (selector2) return selector2(state); + if (!state) return; + if (!key) return; + if (!hasOwnProperty(state, key)) return; + return state[key]; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreStateObject(store, object) { + const objRef = React8.useRef( + {} + ); + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const state = store == null ? void 0 : store.getState(); + let updated = false; + const obj = objRef.current; + for (const prop in object) { + const keyOrSelector = object[prop]; + if (typeof keyOrSelector === "function") { + const value = keyOrSelector(state); + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + if (typeof keyOrSelector === "string") { + if (!state) continue; + if (!hasOwnProperty(state, keyOrSelector)) continue; + const value = state[keyOrSelector]; + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + } + if (updated) { + objRef.current = __spreadValues({}, obj); + } + return objRef.current; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreProps(store, props, key, setKey) { + const value = hasOwnProperty(props, key) ? props[key] : void 0; + const setValue = setKey ? props[setKey] : void 0; + const propsRef = useLiveRef({ value, setValue }); + useSafeLayoutEffect(() => { + return sync(store, [key], (state, prev) => { + const { value: value2, setValue: setValue2 } = propsRef.current; + if (!setValue2) return; + if (state[key] === prev[key]) return; + if (state[key] === value2) return; + setValue2(state[key]); + }); + }, [store, key]); + useSafeLayoutEffect(() => { + if (value === void 0) return; + store.setState(key, value); + return batch(store, [key], () => { + if (value === void 0) return; + store.setState(key, value); + }); + }); +} +function useStore(createStore2, props) { + const [store, setStore] = React8.useState(() => createStore2(props)); + useSafeLayoutEffect(() => init(store), [store]); + const useState23 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => __spreadProps(__spreadValues({}, store), { useState: useState23 }), + [store, useState23] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2(__spreadValues(__spreadValues({}, props), store2.getState()))); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js +function getCommonParent(items) { + var _a; + const firstItem = items.find((item) => !!item.element); + const lastItem = [...items].reverse().find((item) => !!item.element); + let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; + while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { + const parent = parentElement; + if (lastItem && parent.contains(lastItem.element)) { + return parentElement; + } + parentElement = parentElement.parentElement; + } + return getDocument(parentElement).body; +} +function getPrivateStore(store) { + return store == null ? void 0 : store.__unstablePrivateStore; +} +function createCollectionStore(props = {}) { + var _a; + throwOnConflictingProps(props, props.store); + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const items = defaultValue( + props.items, + syncState == null ? void 0 : syncState.items, + props.defaultItems, + [] + ); + const itemsMap = new Map(items.map((item) => [item.id, item])); + const initialState = { + items, + renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) + }; + const syncPrivateStore = getPrivateStore(props.store); + const privateStore = createStore( + { items, renderedItems: initialState.renderedItems }, + syncPrivateStore + ); + const collection = createStore(initialState, props.store); + const sortItems = (renderedItems) => { + const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); + privateStore.setState("renderedItems", sortedItems); + collection.setState("renderedItems", sortedItems); + }; + setup(collection, () => init(privateStore)); + setup(privateStore, () => { + return batch(privateStore, ["items"], (state) => { + collection.setState("items", state.items); + }); + }); + setup(privateStore, () => { + return batch(privateStore, ["renderedItems"], (state) => { + let firstRun = true; + let raf = requestAnimationFrame(() => { + const { renderedItems } = collection.getState(); + if (state.renderedItems === renderedItems) return; + sortItems(state.renderedItems); + }); + if (typeof IntersectionObserver !== "function") { + return () => cancelAnimationFrame(raf); + } + const ioCallback = () => { + if (firstRun) { + firstRun = false; + return; + } + cancelAnimationFrame(raf); + raf = requestAnimationFrame(() => sortItems(state.renderedItems)); + }; + const root = getCommonParent(state.renderedItems); + const observer = new IntersectionObserver(ioCallback, { root }); + for (const item of state.renderedItems) { + if (!item.element) continue; + observer.observe(item.element); + } + return () => { + cancelAnimationFrame(raf); + observer.disconnect(); + }; + }); + }); + const mergeItem = (item, setItems, canDeleteFromMap = false) => { + let prevItem; + setItems((items2) => { + const index = items2.findIndex(({ id }) => id === item.id); + const nextItems = items2.slice(); + if (index !== -1) { + prevItem = items2[index]; + const nextItem = __spreadValues2(__spreadValues2({}, prevItem), item); + nextItems[index] = nextItem; + itemsMap.set(item.id, nextItem); + } else { + nextItems.push(item); + itemsMap.set(item.id, item); + } + return nextItems; + }); + const unmergeItem = () => { + setItems((items2) => { + if (!prevItem) { + if (canDeleteFromMap) { + itemsMap.delete(item.id); + } + return items2.filter(({ id }) => id !== item.id); + } + const index = items2.findIndex(({ id }) => id === item.id); + if (index === -1) return items2; + const nextItems = items2.slice(); + nextItems[index] = prevItem; + itemsMap.set(item.id, prevItem); + return nextItems; + }); + }; + return unmergeItem; + }; + const registerItem = (item) => mergeItem( + item, + (getItems) => privateStore.setState("items", getItems), + true + ); + return __spreadProps2(__spreadValues2({}, collection), { + registerItem, + renderItem: (item) => chain( + registerItem(item), + mergeItem( + item, + (getItems) => privateStore.setState("renderedItems", getItems) + ) + ), + item: (id) => { + if (!id) return null; + let item = itemsMap.get(id); + if (!item) { + const { items: items2 } = privateStore.getState(); + item = items2.find((item2) => item2.id === id); + if (item) { + itemsMap.set(id, item); + } + } + return item || null; + }, + // @ts-expect-error Internal + __unstablePrivateStore: privateStore + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js +function toArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return typeof arg !== "undefined" ? [arg] : []; +} +function flatten2DArray(array) { + const flattened = []; + for (const row of array) { + flattened.push(...row); + } + return flattened; +} +function reverseArray(array) { + return array.slice().reverse(); +} + +// node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItems(items, excludeId) { + return items.filter((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getItemsInRow(items, rowId) { + return items.filter((item) => item.rowId === rowId); +} +function flipItems(items, activeId, shouldInsertNullItem = false) { + const index = items.findIndex((item) => item.id === activeId); + return [ + ...items.slice(index + 1), + ...shouldInsertNullItem ? [NULL_ITEM] : [], + ...items.slice(0, index) + ]; +} +function groupItemsByRows(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function getMaxRowLength(array) { + let maxLength = 0; + for (const { length } of array) { + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} +function createEmptyItem(rowId) { + return { + id: "__EMPTY_ITEM__", + disabled: true, + rowId + }; +} +function normalizeRows(rows, activeId, focusShift) { + const maxLength = getMaxRowLength(rows); + for (const row of rows) { + for (let i2 = 0; i2 < maxLength; i2 += 1) { + const item = row[i2]; + if (!item || focusShift && item.disabled) { + const isFirst = i2 === 0; + const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i2 - 1]; + row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); + } + } + } + return rows; +} +function verticalizeItems(items) { + const rows = groupItemsByRows(items); + const maxLength = getMaxRowLength(rows); + const verticalized = []; + for (let i2 = 0; i2 < maxLength; i2 += 1) { + for (const row of rows) { + const item = row[i2]; + if (item) { + verticalized.push(__spreadProps2(__spreadValues2({}, item), { + // If there's no rowId, it means that it's not a grid composite, but + // a single row instead. So, instead of verticalizing it, that is, + // assigning a different rowId based on the column index, we keep it + // undefined so they will be part of the same row. This is useful + // when using up/down on one-dimensional composites. + rowId: item.rowId ? `${i2}` : void 0 + })); + } + } + } + return verticalized; +} +function createCompositeStore(props = {}) { + var _a; + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const collection = createCollectionStore(props); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId + ); + const initialState = __spreadProps2(__spreadValues2({}, collection.getState()), { + id: defaultValue( + props.id, + syncState == null ? void 0 : syncState.id, + `id-${Math.random().toString(36).slice(2, 8)}` + ), + activeId, + baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + activeId === null + ), + moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "both" + ), + rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + false + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), + focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) + }); + const composite = createStore(initialState, collection, props.store); + setup( + composite, + () => sync(composite, ["renderedItems", "activeId"], (state) => { + composite.setState("activeId", (activeId2) => { + var _a2; + if (activeId2 !== void 0) return activeId2; + return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; + }); + }) + ); + const getNextId = (direction = "next", options = {}) => { + var _a2, _b; + const defaultState = composite.getState(); + const { + skip = 0, + activeId: activeId2 = defaultState.activeId, + focusShift = defaultState.focusShift, + focusLoop = defaultState.focusLoop, + focusWrap = defaultState.focusWrap, + includesBaseElement = defaultState.includesBaseElement, + renderedItems = defaultState.renderedItems, + rtl = defaultState.rtl + } = options; + const isVerticalDirection = direction === "up" || direction === "down"; + const isNextDirection = direction === "next" || direction === "down"; + const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; + const canShift = focusShift && !skip; + let items = !isVerticalDirection ? renderedItems : flatten2DArray( + normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id; + } + const isGrid2 = items.some((item) => item.rowId); + const activeIndex = items.indexOf(activeItem); + const nextItems = items.slice(activeIndex + 1); + const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); + if (skip) { + const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); + const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. + nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; + return nextItem2 == null ? void 0 : nextItem2.id; + } + const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); + const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); + const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; + if (canLoop) { + const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); + const sortedItems = flipItems(loopItems, activeId2, hasNullItem); + const nextItem2 = findFirstEnabledItem(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem( + // We can use nextItems, which contains all the next items, including + // items from other rows, to wrap between rows. However, if there is a + // null item (the composite container), we'll only use the next items in + // the row. So moving next from the last item will focus on the + // composite container. On grid composites, horizontal navigation never + // focuses on the composite container, only vertical. + hasNullItem ? nextItemsInRow : nextItems, + activeId2 + ); + const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; + return nextId; + } + const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return __spreadProps2(__spreadValues2(__spreadValues2({}, collection), composite), { + setBaseElement: (element) => composite.setState("baseElement", element), + setActiveId: (id) => composite.setState("activeId", id), + move: (id) => { + if (id === void 0) return; + composite.setState("activeId", id); + composite.setState("moves", (moves) => moves + 1); + }, + first: () => { + var _a2; + return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; + }, + next: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("next", options); + }, + previous: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("previous", options); + }, + down: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("down", options); + }, + up: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("up", options); + } + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return __spreadValues({ id }, props); +} +function useCompositeStoreProps(store, update2, props) { + store = useCollectionStoreProps(store, update2, props); + useStoreProps(store, props, "activeId", "setActiveId"); + useStoreProps(store, props, "includesBaseElement"); + useStoreProps(store, props, "virtualFocus"); + useStoreProps(store, props, "orientation"); + useStoreProps(store, props, "rtl"); + useStoreProps(store, props, "focusLoop"); + useStoreProps(store, props, "focusWrap"); + useStoreProps(store, props, "focusShift"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js +function createDisclosureStore(props = {}) { + const store = mergeStore( + props.store, + omit22(props.disclosure, ["contentElement", "disclosureElement"]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const open = defaultValue( + props.open, + syncState == null ? void 0 : syncState.open, + props.defaultOpen, + false + ); + const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); + const initialState = { + open, + animated, + animating: !!animated && open, + mounted: open, + contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), + disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) + }; + const disclosure = createStore(initialState, store); + setup( + disclosure, + () => sync(disclosure, ["animated", "animating"], (state) => { + if (state.animated) return; + disclosure.setState("animating", false); + }) + ); + setup( + disclosure, + () => subscribe(disclosure, ["open"], () => { + if (!disclosure.getState().animated) return; + disclosure.setState("animating", true); + }) + ); + setup( + disclosure, + () => sync(disclosure, ["open", "animating"], (state) => { + disclosure.setState("mounted", state.open || state.animating); + }) + ); + return __spreadProps2(__spreadValues2({}, disclosure), { + disclosure: props.disclosure, + setOpen: (value) => disclosure.setState("open", value), + show: () => disclosure.setState("open", true), + hide: () => disclosure.setState("open", false), + toggle: () => disclosure.setState("open", (open2) => !open2), + stopAnimation: () => disclosure.setState("animating", false), + setContentElement: (value) => disclosure.setState("contentElement", value), + setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js +function useDisclosureStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store, props.disclosure]); + useStoreProps(store, props, "open", "setOpen"); + useStoreProps(store, props, "mounted", "setMounted"); + useStoreProps(store, props, "animated"); + return Object.assign(store, { disclosure: props.disclosure }); +} + +// node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js +function createPopoverStore(_a = {}) { + var _b = _a, { + popover: otherPopover + } = _b, props = __objRest2(_b, [ + "popover" + ]); + const store = mergeStore( + props.store, + omit22(otherPopover, [ + "arrowElement", + "anchorElement", + "contentElement", + "popoverElement", + "disclosureElement" + ]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const dialog = createDialogStore(__spreadProps2(__spreadValues2({}, props), { store })); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = __spreadProps2(__spreadValues2({}, dialog.getState()), { + placement, + currentPlacement: placement, + anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), + popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), + arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), + rendered: /* @__PURE__ */ Symbol("rendered") + }); + const popover = createStore(initialState, dialog, store); + return __spreadProps2(__spreadValues2(__spreadValues2({}, dialog), popover), { + setAnchorElement: (element) => popover.setState("anchorElement", element), + setPopoverElement: (element) => popover.setState("popoverElement", element), + setArrowElement: (element) => popover.setState("arrowElement", element), + render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore(_a = {}) { + var _b = _a, { + tag + } = _b, props = __objRest2(_b, [ + "tag" + ]); + const store = mergeStore(props.store, pick2(tag, ["value", "rtl"])); + throwOnConflictingProps(props, store); + const tagState = tag == null ? void 0 : tag.getState(); + const syncState = store == null ? void 0 : store.getState(); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId, + null + ); + const composite = createCompositeStore(__spreadProps2(__spreadValues2({}, props), { + activeId, + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + true + ), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "vertical" + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + true + ) + })); + const popover = createPopoverStore(__spreadProps2(__spreadValues2({}, props), { + placement: defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom-start" + ) + })); + const value = defaultValue( + props.value, + syncState == null ? void 0 : syncState.value, + props.defaultValue, + "" + ); + const selectedValue = defaultValue( + props.selectedValue, + syncState == null ? void 0 : syncState.selectedValue, + tagState == null ? void 0 : tagState.values, + props.defaultSelectedValue, + "" + ); + const multiSelectable = Array.isArray(selectedValue); + const initialState = __spreadProps2(__spreadValues2(__spreadValues2({}, composite.getState()), popover.getState()), { + value, + selectedValue, + resetValueOnSelect: defaultValue( + props.resetValueOnSelect, + syncState == null ? void 0 : syncState.resetValueOnSelect, + multiSelectable + ), + resetValueOnHide: defaultValue( + props.resetValueOnHide, + syncState == null ? void 0 : syncState.resetValueOnHide, + multiSelectable && !tag + ), + activeValue: syncState == null ? void 0 : syncState.activeValue + }); + const combobox = createStore(initialState, composite, popover, store); + if (isTouchSafari) { + setup( + combobox, + () => sync(combobox, ["virtualFocus"], () => { + combobox.setState("virtualFocus", false); + }) + ); + } + setup(combobox, () => { + if (!tag) return; + return chain( + sync(combobox, ["selectedValue"], (state) => { + if (!Array.isArray(state.selectedValue)) return; + tag.setValues(state.selectedValue); + }), + sync(tag, ["values"], (state) => { + combobox.setState("selectedValue", state.values); + }) + ); + }); + setup( + combobox, + () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { + if (!state.resetValueOnHide) return; + if (state.mounted) return; + combobox.setState("value", value); + }) + ); + setup( + combobox, + () => sync(combobox, ["open"], (state) => { + if (state.open) return; + combobox.setState("activeId", activeId); + combobox.setState("moves", 0); + }) + ); + setup( + combobox, + () => sync(combobox, ["moves", "activeId"], (state, prevState) => { + if (state.moves === prevState.moves) { + combobox.setState("activeValue", void 0); + } + }) + ); + setup( + combobox, + () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { + if (state.moves === prev.moves) return; + const { activeId: activeId2 } = combobox.getState(); + const activeItem = composite.item(activeId2); + combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); + }) + ); + return __spreadProps2(__spreadValues2(__spreadValues2(__spreadValues2({}, popover), composite), combobox), { + tag, + setValue: (value2) => combobox.setState("value", value2), + resetValue: () => combobox.setState("value", initialState.value), + setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = __spreadProps(__spreadValues({}, props), { + tag: props.tag !== void 0 ? props.tag : tag + }); + return useCompositeStoreOptions(props); +} +function useComboboxStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.tag]); + useStoreProps(store, props, "value", "setValue"); + useStoreProps(store, props, "selectedValue", "setSelectedValue"); + useStoreProps(store, props, "resetValueOnHide"); + useStoreProps(store, props, "resetValueOnSelect"); + return Object.assign( + useCompositeStoreProps( + usePopoverStoreProps(store, update2, props), + update2, + props + ), + { tag: props.tag } + ); +} +function useComboboxStore(props = {}) { + props = useComboboxStoreOptions(props); + const [store, update2] = useStore(createComboboxStore, props); + return useComboboxStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js +var ctx4 = createStoreContext(); +var useDisclosureContext = ctx4.useContext; +var useDisclosureScopedContext = ctx4.useScopedContext; +var useDisclosureProviderContext = ctx4.useProviderContext; +var DisclosureContextProvider = ctx4.ContextProvider; +var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js +var import_react8 = __toESM(require_react(), 1); +var ctx5 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx5.useContext; +var useDialogScopedContext = ctx5.useScopedContext; +var useDialogProviderContext = ctx5.useProviderContext; +var DialogContextProvider = ctx5.ContextProvider; +var DialogScopedContextProvider = ctx5.ScopedContextProvider; +var DialogHeadingContext = (0, import_react8.createContext)(void 0); +var DialogDescriptionContext = (0, import_react8.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js +var ctx6 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx6.useContext; +var usePopoverScopedContext = ctx6.useScopedContext; +var usePopoverProviderContext = ctx6.useProviderContext; +var PopoverContextProvider = ctx6.ContextProvider; +var PopoverScopedContextProvider = ctx6.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js +var import_react9 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react9.createContext)( + void 0 +); +var ctx7 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx7.useContext; +var useComboboxScopedContext = ctx7.useScopedContext; +var useComboboxProviderContext = ctx7.useProviderContext; +var ComboboxContextProvider = ctx7.ContextProvider; +var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react9.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react9.createContext)(false); + +// node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js +var TagName = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = usePopoverProviderContext(); + store = store || context; + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) + }); + return props; + } +); +var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { + const htmlProps = usePopoverAnchor(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js +function findFirstEnabledItem2(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItem(store, id) { + if (!id) return null; + return store.item(id) || null; +} +function groupItemsByRows2(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function selectTextField(element, collapseToEnd = false) { + if (isTextField(element)) { + element.setSelectionRange( + collapseToEnd ? element.value.length : 0, + element.value.length + ); + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + selection == null ? void 0 : selection.selectAllChildren(element); + if (collapseToEnd) { + selection == null ? void 0 : selection.collapseToEnd(); + } + } +} +var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); +function focusSilently(element) { + element[FOCUS_SILENTLY] = true; + element.focus({ preventScroll: true }); +} +function silentlyFocused(element) { + const isSilentlyFocused = element[FOCUS_SILENTLY]; + delete element[FOCUS_SILENTLY]; + return isSilentlyFocused; +} +function isItem(store, element, exclude) { + if (!element) return false; + if (element === exclude) return false; + const item = store.item(element.id); + if (!item) return false; + if (exclude && item.element === exclude) return false; + return true; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react10 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react10.createContext)(true); + +// node_modules/@ariakit/core/esm/utils/focus.js +var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; +function isFocusable(element) { + if (!element.matches(selector)) return false; + if (!isVisible(element)) return false; + if (element.closest("[inert]")) return false; + return true; +} +function getClosestFocusable(element) { + while (element && !isFocusable(element)) { + element = element.closest(selector); + } + return element || null; +} +function hasFocus(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (activeElement === element) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + return activeDescendant === element.id; +} +function hasFocusWithin(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (contains(element, activeElement)) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + if (!("id" in element)) return false; + if (activeDescendant === element.id) return true; + return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); +} +function focusIfNeeded(element) { + if (!hasFocusWithin(element) && isFocusable(element)) { + element.focus(); + } +} +function focusIntoView(element, options) { + if (!("scrollIntoView" in element)) { + element.focus(); + } else { + element.focus({ preventScroll: true }); + element.scrollIntoView(__spreadValues2({ block: "nearest", inline: "nearest" }, options)); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js +var import_react11 = __toESM(require_react(), 1); +var TagName2 = "div"; +var isSafariBrowser = isSafari(); +var alwaysFocusVisibleInputTypes = [ + "text", + "search", + "url", + "tel", + "email", + "password", + "number", + "date", + "month", + "week", + "time", + "datetime", + "datetime-local" +]; +var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); +function markSafariFocusAncestor(element, value) { + if (!element) return; + element[safariFocusAncestorSymbol] = value; +} +function isAlwaysFocusVisible(element) { + const { tagName, readOnly, type } = element; + if (tagName === "TEXTAREA" && !readOnly) return true; + if (tagName === "SELECT" && !readOnly) return true; + if (tagName === "INPUT" && !readOnly) { + return alwaysFocusVisibleInputTypes.includes(type); + } + if (element.isContentEditable) return true; + const role = element.getAttribute("role"); + if (role === "combobox" && element.dataset.name) { + return true; + } + return false; +} +function getLabels(element) { + if ("labels" in element) { + return element.labels; + } + return null; +} +function isNativeCheckboxOrRadio(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "input" && element.type) { + return element.type === "radio" || element.type === "checkbox"; + } + return false; +} +function isNativeTabbable(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; +} +function supportsDisabledAttribute(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; +} +function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { + if (!focusable) { + return tabIndexProp; + } + if (trulyDisabled) { + if (nativeTabbable && !supportsDisabled) { + return -1; + } + return; + } + if (nativeTabbable) { + return tabIndexProp; + } + return tabIndexProp || 0; +} +function useDisableEvent(onEvent, disabled) { + return useEvent((event) => { + onEvent == null ? void 0 : onEvent(event); + if (event.defaultPrevented) return; + if (disabled) { + event.stopPropagation(); + event.preventDefault(); + } + }); +} +var isKeyboardModality = true; +function onGlobalMouseDown(event) { + const target = event.target; + if (target && "hasAttribute" in target) { + if (!target.hasAttribute("data-focus-visible")) { + isKeyboardModality = false; + } + } +} +function onGlobalKeyDown(event) { + if (event.metaKey) return; + if (event.ctrlKey) return; + if (event.altKey) return; + isKeyboardModality = true; +} +var useFocusable = createHook( + function useFocusable2(_a) { + var _b = _a, { + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible + } = _b, props = __objRest(_b, [ + "focusable", + "accessibleWhenDisabled", + "autoFocus", + "onFocusVisible" + ]); + const ref = (0, import_react11.useRef)(null); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + }, [focusable]); + if (isSafariBrowser) { + (0, import_react11.useEffect)(() => { + if (!focusable) return; + const element = ref.current; + if (!element) return; + if (!isNativeCheckboxOrRadio(element)) return; + const labels = getLabels(element); + if (!labels) return; + const onMouseUp = () => queueMicrotask(() => element.focus()); + for (const label of labels) { + label.addEventListener("mouseup", onMouseUp); + } + return () => { + for (const label of labels) { + label.removeEventListener("mouseup", onMouseUp); + } + }; + }, [focusable]); + } + const disabled = focusable && disabledFromProps(props); + const trulyDisabled = !!disabled && !accessibleWhenDisabled; + const [focusVisible, setFocusVisible] = (0, import_react11.useState)(false); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (!focusVisible) return; + const element = ref.current; + if (!element) return; + if (typeof IntersectionObserver === "undefined") return; + const observer = new IntersectionObserver(() => { + if (!isFocusable(element)) { + setFocusVisible(false); + } + }); + observer.observe(element); + return () => observer.disconnect(); + }, [focusable, focusVisible]); + const onKeyPressCapture = useDisableEvent( + props.onKeyPressCapture, + disabled + ); + const onMouseDownCapture = useDisableEvent( + props.onMouseDownCapture, + disabled + ); + const onClickCapture = useDisableEvent(props.onClickCapture, disabled); + const onMouseDownProp = props.onMouseDown; + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + const element = event.currentTarget; + if (!isSafariBrowser) return; + if (isPortalEvent(event)) return; + if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; + let receivedFocus = false; + const onFocus = () => { + receivedFocus = true; + }; + const options = { capture: true, once: true }; + element.addEventListener("focusin", onFocus, options); + const focusableContainer = getClosestFocusable(element.parentElement); + markSafariFocusAncestor(focusableContainer, true); + queueBeforeEvent(element, "mouseup", () => { + element.removeEventListener("focusin", onFocus, true); + markSafariFocusAncestor(focusableContainer, false); + if (receivedFocus) return; + focusIfNeeded(element); + }); + }); + const handleFocusVisible = (event, currentTarget) => { + if (currentTarget) { + event.currentTarget = currentTarget; + } + if (!focusable) return; + const element = event.currentTarget; + if (!element) return; + if (!hasFocus(element)) return; + onFocusVisible == null ? void 0 : onFocusVisible(event); + if (event.defaultPrevented) return; + element.dataset.focusVisible = "true"; + setFocusVisible(true); + }; + const onKeyDownCaptureProp = props.onKeyDownCapture; + const onKeyDownCapture = useEvent((event) => { + onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (focusVisible) return; + if (event.metaKey) return; + if (event.altKey) return; + if (event.ctrlKey) return; + if (!isSelfTarget(event)) return; + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + queueBeforeEvent(element, "focusout", applyFocusVisible); + }); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (!isSelfTarget(event)) { + setFocusVisible(false); + return; + } + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { + queueBeforeEvent(event.target, "focusout", applyFocusVisible); + } else { + setFocusVisible(false); + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + onBlurProp == null ? void 0 : onBlurProp(event); + if (!focusable) return; + if (!isFocusEventOutside(event)) return; + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react11.useContext)(FocusableContext); + const autoFocusRef = useEvent((element) => { + if (!focusable) return; + if (!autoFocus) return; + if (!element) return; + if (!autoFocusOnShow) return; + queueMicrotask(() => { + if (hasFocus(element)) return; + if (!isFocusable(element)) return; + element.focus(); + }); + }); + const tagName = useTagName(ref); + const nativeTabbable = focusable && isNativeTabbable(tagName); + const supportsDisabled = focusable && supportsDisabledAttribute(tagName); + const styleProp = props.style; + const style = (0, import_react11.useMemo)(() => { + if (trulyDisabled) { + return __spreadValues({ pointerEvents: "none" }, styleProp); + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = __spreadProps(__spreadValues({ + "data-focus-visible": focusable && focusVisible || void 0, + "data-autofocus": autoFocus || void 0, + "aria-disabled": disabled || void 0 + }, props), { + ref: useMergeRefs(ref, autoFocusRef, props.ref), + style, + tabIndex: getTabIndex( + focusable, + trulyDisabled, + nativeTabbable, + supportsDisabled, + props.tabIndex + ), + disabled: supportsDisabled && trulyDisabled ? true : void 0, + // TODO: Test Focusable contentEditable. + contentEditable: disabled ? void 0 : props.contentEditable, + onKeyPressCapture, + onClickCapture, + onMouseDownCapture, + onMouseDown, + onKeyDownCapture, + onFocusCapture, + onBlur + }); + return removeUndefinedValues(props); + } +); +var Focusable = forwardRef22(function Focusable2(props) { + const htmlProps = useFocusable(props); + return createElement3(TagName2, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var TagName3 = "div"; +function isGrid(items) { + return items.some((item) => !!item.rowId); +} +function isPrintableKey(event) { + const target = event.target; + if (target && !isTextField(target)) return false; + return event.key.length === 1 && !event.ctrlKey && !event.metaKey; +} +function isModifierKey(event) { + return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; +} +function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { + return useEvent((event) => { + var _a; + onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); + if (event.defaultPrevented) return; + if (event.isPropagationStopped()) return; + if (!isSelfTarget(event)) return; + if (isModifierKey(event)) return; + if (isPrintableKey(event)) return; + const state = store.getState(); + const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; + if (!activeElement) return; + const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); + const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; + if (activeElement !== previousElement) { + activeElement.focus(); + } + if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { + event.preventDefault(); + } + if (event.currentTarget.contains(activeElement)) { + event.stopPropagation(); + } + }); +} +function findFirstEnabledItemInTheLastRow(items) { + return findFirstEnabledItem2( + flatten2DArray(reverseArray(groupItemsByRows2(items))) + ); +} +function useScheduleFocus(store) { + const [scheduled, setScheduled] = (0, import_react12.useState)(false); + const schedule = (0, import_react12.useCallback)(() => setScheduled(true), []); + const activeItem = store.useState( + (state) => getEnabledItem(store, state.activeId) + ); + (0, import_react12.useEffect)(() => { + const activeElement = activeItem == null ? void 0 : activeItem.element; + if (!scheduled) return; + if (!activeElement) return; + setScheduled(false); + activeElement.focus({ preventScroll: true }); + }, [activeItem, scheduled]); + return schedule; +} +var useComposite = createHook( + function useComposite2(_a) { + var _b = _a, { + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true + } = _b, props = __objRest(_b, [ + "store", + "composite", + "focusOnMove", + "moveOnKeyPress" + ]); + const context = useCompositeProviderContext(); + store = store || context; + invariant( + store, + "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." + ); + const ref = (0, import_react12.useRef)(null); + const previousElementRef = (0, import_react12.useRef)(null); + const scheduleFocus = useScheduleFocus(store); + const moves = store.useState("moves"); + const [, setBaseElement] = useTransactionState( + composite ? store.setBaseElement : null + ); + (0, import_react12.useEffect)(() => { + var _a2; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + if (!itemElement) return; + focusIntoView(itemElement); + }, [store, moves, composite, focusOnMove]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!moves) return; + if (!composite) return; + const { baseElement, activeId: activeId2 } = store.getState(); + const isSelfAcive = activeId2 === null; + if (!isSelfAcive) return; + if (!baseElement) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (previousElement) { + fireBlurEvent(previousElement, { relatedTarget: baseElement }); + } + if (!hasFocus(baseElement)) { + baseElement.focus(); + } + }, [store, moves, composite]); + const activeId = store.useState("activeId"); + const virtualFocus = store.useState("virtualFocus"); + useSafeLayoutEffect(() => { + var _a2; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; + const relatedTarget = activeElement || getActiveElement(previousElement); + if (relatedTarget === previousElement) return; + fireBlurEvent(previousElement, { relatedTarget }); + }, [store, activeId, virtualFocus, composite]); + const onKeyDownCapture = useKeyboardEventProxy( + store, + props.onKeyDownCapture, + previousElementRef + ); + const onKeyUpCapture = useKeyboardEventProxy( + store, + props.onKeyUpCapture, + previousElementRef + ); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (!virtualFocus2) return; + const previousActiveElement = event.relatedTarget; + const isSilentlyFocused = silentlyFocused(event.currentTarget); + if (isSelfTarget(event) && isSilentlyFocused) { + event.stopPropagation(); + previousElementRef.current = previousActiveElement; + } + }); + const onFocusProp = props.onFocus; + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (!composite) return; + if (!store) return; + const { relatedTarget } = event; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (virtualFocus2) { + if (isSelfTarget(event) && !isItem(store, relatedTarget)) { + queueMicrotask(scheduleFocus); + } + } else if (isSelfTarget(event)) { + store.setActiveId(null); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + var _a2; + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); + if (!virtualFocus2) return; + const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + const nextActiveElement = event.relatedTarget; + const nextActiveElementIsItem = isItem(store, nextActiveElement); + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (isSelfTarget(event) && nextActiveElementIsItem) { + if (nextActiveElement === activeElement) { + if (previousElement && previousElement !== nextActiveElement) { + fireBlurEvent(previousElement, event); + } + } else if (activeElement) { + fireBlurEvent(activeElement, event); + } else if (previousElement) { + fireBlurEvent(previousElement, event); + } + event.stopPropagation(); + } else { + const targetIsItem = isItem(store, event.target); + if (!targetIsItem && activeElement) { + fireBlurEvent(activeElement, event); + } + } + }); + const onKeyDownProp = props.onKeyDown; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + var _a2; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; + const isVertical = orientation !== "horizontal"; + const isHorizontal = orientation !== "vertical"; + const grid = isGrid(renderedItems); + const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; + if (isHorizontalKey && isTextField(event.currentTarget)) return; + const up = () => { + if (grid) { + const item = findFirstEnabledItemInTheLastRow(renderedItems); + return item == null ? void 0 : item.id; + } + return store == null ? void 0 : store.last(); + }; + const keyMap = { + ArrowUp: (grid || isVertical) && up, + ArrowRight: (grid || isHorizontal) && store.first, + ArrowDown: (grid || isVertical) && store.first, + ArrowLeft: (grid || isHorizontal) && store.last, + Home: store.first, + End: store.last, + PageUp: store.first, + PageDown: store.last + }; + const action = keyMap[event.key]; + if (action) { + const id = action(); + if (id !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(id); + } + } + }); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a2; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; + }); + props = __spreadProps(__spreadValues({ + "aria-activedescendant": activeDescendant + }, props), { + ref: useMergeRefs(ref, setBaseElement, props.ref), + onKeyDownCapture, + onKeyUpCapture, + onFocusCapture, + onFocus, + onBlurCapture, + onKeyDown + }); + const focusable = store.useState( + (state) => composite && (state.virtualFocus || state.activeId === null) + ); + props = useFocusable(__spreadValues({ focusable }, props)); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName3, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react13 = __toESM(require_react(), 1); +var TagName4 = "input"; +function isFirstItemAutoSelected(items, activeValue, autoSelect) { + if (!autoSelect) return false; + const firstItem = items.find((item) => !item.disabled && item.value); + return (firstItem == null ? void 0 : firstItem.value) === activeValue; +} +function hasCompletionString(value, activeValue) { + if (!activeValue) return false; + if (value == null) return false; + value = normalizeString(value); + return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; +} +function isInputEvent(event) { + return event.type === "input"; +} +function isAriaAutoCompleteValue(value) { + return value === "inline" || value === "list" || value === "both" || value === "none"; +} +function getDefaultAutoSelectId(items) { + const item = items.find((item2) => { + var _a; + if (item2.disabled) return false; + return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; + }); + return item == null ? void 0 : item.id; +} +var useCombobox = createHook( + function useCombobox2(_a) { + var _b = _a, { + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list" + } = _b, props = __objRest(_b, [ + "store", + "focusable", + "autoSelect", + "getAutoSelectId", + "setValueOnChange", + "showMinLength", + "showOnChange", + "showOnMouseDown", + "showOnClick", + "showOnKeyDown", + "showOnKeyPress", + "blurActiveItemOnClick", + "setValueOnClick", + "moveOnKeyPress", + "autoComplete" + ]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react13.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react13.useRef)(false); + const composingRef = (0, import_react13.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react13.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react13.useRef)(); + (0, import_react13.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a2; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return; + } + return state.activeValue; + }); + const items = store.useState("renderedItems"); + const open = store.useState("open"); + const contentElement = store.useState("contentElement"); + const value = (0, import_react13.useMemo)(() => { + if (!inline) return storeValue; + if (!canInline) return storeValue; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (firstItemAutoSelected) { + if (hasCompletionString(storeValue, inlineActiveValue)) { + const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; + return storeValue + slice; + } + return storeValue; + } + return inlineActiveValue || storeValue; + }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); + (0, import_react13.useEffect)(() => { + const element = ref.current; + if (!element) return; + const onCompositeItemMove = () => setCanInline(true); + element.addEventListener("combobox-item-move", onCompositeItemMove); + return () => { + element.removeEventListener("combobox-item-move", onCompositeItemMove); + }; + }, []); + (0, import_react13.useEffect)(() => { + if (!inline) return; + if (!canInline) return; + if (!inlineActiveValue) return; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (!firstItemAutoSelected) return; + if (!hasCompletionString(storeValue, inlineActiveValue)) return; + let cleanup = noop; + queueMicrotask(() => { + const element = ref.current; + if (!element) return; + const { start: prevStart, end: prevEnd } = getTextboxSelection(element); + const nextStart = storeValue.length; + const nextEnd = inlineActiveValue.length; + setSelectionRange(element, nextStart, nextEnd); + cleanup = () => { + if (!hasFocus(element)) return; + const { start, end } = getTextboxSelection(element); + if (start !== nextStart) return; + if (end !== nextEnd) return; + setSelectionRange(element, prevStart, prevEnd); + }; + }); + return () => cleanup(); + }, [ + valueUpdated, + inline, + canInline, + inlineActiveValue, + items, + autoSelect, + storeValue + ]); + const scrollingElementRef = (0, import_react13.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react13.useRef)(null); + (0, import_react13.useEffect)(() => { + if (!open) return; + if (!contentElement) return; + const scrollingElement = getScrollingElement(contentElement); + if (!scrollingElement) return; + scrollingElementRef.current = scrollingElement; + const onUserScroll = () => { + canAutoSelectRef.current = false; + }; + const onScroll = () => { + if (!store) return; + if (!canAutoSelectRef.current) return; + const { activeId } = store.getState(); + if (activeId === null) return; + if (activeId === autoSelectIdRef.current) return; + canAutoSelectRef.current = false; + }; + const options = { passive: true, capture: true }; + scrollingElement.addEventListener("wheel", onUserScroll, options); + scrollingElement.addEventListener("touchmove", onUserScroll, options); + scrollingElement.addEventListener("scroll", onScroll, options); + return () => { + scrollingElement.removeEventListener("wheel", onUserScroll, true); + scrollingElement.removeEventListener("touchmove", onUserScroll, true); + scrollingElement.removeEventListener("scroll", onScroll, true); + }; + }, [open, contentElement, store]); + useSafeLayoutEffect(() => { + if (!storeValue) return; + if (composingRef.current) return; + canAutoSelectRef.current = true; + }, [storeValue]); + useSafeLayoutEffect(() => { + if (autoSelect !== "always" && open) return; + canAutoSelectRef.current = open; + }, [autoSelect, open]); + const resetValueOnSelect = store.useState("resetValueOnSelect"); + useUpdateEffect(() => { + var _a2, _b2; + const canAutoSelect = canAutoSelectRef.current; + if (!store) return; + if (!open) return; + if (!canAutoSelect && !resetValueOnSelect) return; + const { baseElement, contentElement: contentElement2, activeId } = store.getState(); + if (baseElement && !hasFocus(baseElement)) return; + if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { + const observer = new MutationObserver(forceValueUpdate); + observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); + return () => observer.disconnect(); + } + if (autoSelect && canAutoSelect) { + const userAutoSelectId = getAutoSelectIdProp(items); + const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react13.useEffect)(() => { + if (!inline) return; + const combobox = ref.current; + if (!combobox) return; + const elements = [combobox, contentElement].filter( + (value2) => !!value2 + ); + const onBlur2 = (event) => { + if (elements.every((el) => isFocusEventOutside(event, el))) { + store == null ? void 0 : store.setValue(value); + } + }; + for (const element of elements) { + element.addEventListener("focusout", onBlur2); + } + return () => { + for (const element of elements) { + element.removeEventListener("focusout", onBlur2); + } + }; + }, [inline, contentElement, store, value]); + const canShow = (event) => { + const currentTarget = event.currentTarget; + return currentTarget.value.length >= showMinLength; + }; + const onChangeProp = props.onChange; + const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); + const setValueOnChangeProp = useBooleanEvent( + // If the combobox is combined with tags, the value will be set by the tag + // input component. + setValueOnChange != null ? setValueOnChange : !store.tag + ); + const onChange = useEvent((event) => { + onChangeProp == null ? void 0 : onChangeProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const currentTarget = event.currentTarget; + const { value: value2, selectionStart, selectionEnd } = currentTarget; + const nativeEvent = event.nativeEvent; + canAutoSelectRef.current = true; + if (isInputEvent(nativeEvent)) { + if (nativeEvent.isComposing) { + canAutoSelectRef.current = false; + composingRef.current = true; + } + if (inline) { + const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; + const caretAtEnd = selectionStart === value2.length; + setCanInline(textInserted && caretAtEnd); + } + } + if (setValueOnChangeProp(event)) { + const isSameValue = value2 === store.getState().value; + store.setValue(value2); + queueMicrotask(() => { + setSelectionRange(currentTarget, selectionStart, selectionEnd); + }); + if (inline && autoSelect && isSameValue) { + forceValueUpdate(); + } + } + if (showOnChangeProp(event)) { + store.show(); + } + if (!autoSelect || !canAutoSelectRef.current) { + store.setActiveId(null); + } + }); + const onCompositionEndProp = props.onCompositionEnd; + const onCompositionEnd = useEvent((event) => { + canAutoSelectRef.current = true; + composingRef.current = false; + onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); + if (event.defaultPrevented) return; + if (!autoSelect) return; + forceValueUpdate(); + }); + const onMouseDownProp = props.onMouseDown; + const blurActiveItemOnClickProp = useBooleanEvent( + blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement) + ); + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (event.button) return; + if (event.ctrlKey) return; + if (!store) return; + if (blurActiveItemOnClickProp(event)) { + store.setActiveId(null); + } + if (setValueOnClickProp(event)) { + store.setValue(value); + } + if (showOnClickProp(event)) { + queueBeforeEvent(event.currentTarget, "mouseup", store.show); + } + }); + const onKeyDownProp = props.onKeyDown; + const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (!event.repeat) { + canAutoSelectRef.current = false; + } + if (event.defaultPrevented) return; + if (event.ctrlKey) return; + if (event.altKey) return; + if (event.shiftKey) return; + if (event.metaKey) return; + if (!store) return; + const { open: open2 } = store.getState(); + if (open2) return; + if (event.key === "ArrowUp" || event.key === "ArrowDown") { + if (showOnKeyPressProp(event)) { + event.preventDefault(); + store.show(); + } + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + canAutoSelectRef.current = false; + onBlurProp == null ? void 0 : onBlurProp(event); + if (event.defaultPrevented) return; + }); + const id = useId3(props.id); + const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; + const isActiveItem = store.useState((state) => state.activeId === null); + props = __spreadProps(__spreadValues({ + id, + role: "combobox", + "aria-autocomplete": ariaAutoComplete, + "aria-haspopup": getPopupRole(contentElement, "listbox"), + "aria-expanded": open, + "aria-controls": contentElement == null ? void 0 : contentElement.id, + "data-active-item": isActiveItem || void 0, + value + }, props), { + ref: useMergeRefs(ref, props.ref), + onChange, + onCompositionEnd, + onMouseDown, + onKeyDown, + onBlur + }); + props = useComposite(__spreadProps(__spreadValues({ + store, + focusable + }, props), { + // Enable inline autocomplete when the user moves from the combobox input + // to an item. + moveOnKeyPress: (event) => { + if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; + if (inline) setCanInline(true); + return true; + } + })); + props = usePopoverAnchor(__spreadValues({ store }, props)); + return __spreadValues({ autoComplete: "off" }, props); + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName4, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js +var import_react14 = __toESM(require_react(), 1); +var TagName5 = "button"; +function isNativeClick(event) { + if (!event.isTrusted) return false; + const element = event.currentTarget; + if (event.key === "Enter") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; + } + if (event.key === " ") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; + } + return false; +} +var symbol = /* @__PURE__ */ Symbol("command"); +var useCommand = createHook( + function useCommand2(_a) { + var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); + const ref = (0, import_react14.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); + (0, import_react14.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react14.useState)(false); + const activeRef = (0, import_react14.useRef)(false); + const disabled = disabledFromProps(props); + const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + const element = event.currentTarget; + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (!isSelfTarget(event)) return; + if (isTextField(element)) return; + if (element.isContentEditable) return; + const isEnter = clickOnEnter && event.key === "Enter"; + const isSpace = clickOnSpace && event.key === " "; + const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; + const shouldPreventSpace = event.key === " " && !clickOnSpace; + if (shouldPreventEnter || shouldPreventSpace) { + event.preventDefault(); + return; + } + if (isEnter || isSpace) { + const nativeClick = isNativeClick(event); + if (isEnter) { + if (!nativeClick) { + event.preventDefault(); + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + const click = () => fireClickEvent(element, eventInit); + if (isFirefox()) { + queueBeforeEvent(element, "keyup", click); + } else { + queueMicrotask(click); + } + } + } else if (isSpace) { + activeRef.current = true; + if (!nativeClick) { + event.preventDefault(); + setActive(true); + } + } + } + }); + const onKeyUpProp = props.onKeyUp; + const onKeyUp = useEvent((event) => { + onKeyUpProp == null ? void 0 : onKeyUpProp(event); + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (event.metaKey) return; + const isSpace = clickOnSpace && event.key === " "; + if (activeRef.current && isSpace) { + activeRef.current = false; + if (!isNativeClick(event)) { + event.preventDefault(); + setActive(false); + const element = event.currentTarget; + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = __spreadProps(__spreadValues(__spreadValues({ + "data-active": active || void 0, + type: isNativeButton ? "button" : void 0 + }, metadataProps), props), { + ref: useMergeRefs(ref, props.ref), + onKeyDown, + onKeyUp + }); + props = useFocusable(props); + return props; + } +); +var Command = forwardRef22(function Command2(props) { + const htmlProps = useCommand(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js +var import_react15 = __toESM(require_react(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "span"; +function normalizeValue(value) { + return normalizeString(value).toLowerCase(); +} +function getOffsets(string, values) { + const offsets = []; + for (const value of values) { + let pos = 0; + const length = value.length; + while (string.indexOf(value, pos) !== -1) { + const index = string.indexOf(value, pos); + if (index !== -1) { + offsets.push([index, length]); + } + pos = index + 1; + } + } + return offsets; +} +function filterOverlappingOffsets(offsets) { + return offsets.filter(([offset, length], i2, arr) => { + return !arr.some( + ([o2, l2], j2) => j2 !== i2 && o2 <= offset && o2 + l2 >= offset + length + ); + }); +} +function sortOffsets(offsets) { + return offsets.sort(([a2], [b2]) => a2 - b2); +} +function splitValue(itemValue, userValue) { + if (!itemValue) return itemValue; + if (!userValue) return itemValue; + const userValues = toArray(userValue).filter(Boolean).map(normalizeValue); + const parts = []; + const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + "span", + { + "data-autocomplete-value": autocomplete ? "" : void 0, + "data-user-value": autocomplete ? void 0 : "", + children: value + }, + parts.length + ); + const offsets = sortOffsets( + filterOverlappingOffsets( + // Convert userValues into a set to avoid duplicates + getOffsets(normalizeValue(itemValue), new Set(userValues)) + ) + ); + if (!offsets.length) { + parts.push(span(itemValue, true)); + return parts; + } + const [firstOffset] = offsets[0]; + const values = [ + itemValue.slice(0, firstOffset), + ...offsets.flatMap(([offset, length], i2) => { + var _a; + const value = itemValue.slice(offset, offset + length); + const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; + const nextValue = itemValue.slice(offset + length, nextOffset); + return [value, nextValue]; + }) + ]; + values.forEach((value, i2) => { + if (!value) return; + parts.push(span(value, i2 % 2 === 0)); + }); + return parts; +} +var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) { + var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]); + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react15.useContext)(ComboboxItemValueContext); + const itemValue = value != null ? value : itemContext; + const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); + const children = (0, import_react15.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = __spreadValues({ + children + }, props); + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName6, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js +var import_react16 = __toESM(require_react(), 1); +var TagName7 = "div"; +function getMouseDestination(event) { + const relatedTarget = event.relatedTarget; + if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { + return relatedTarget; + } + return null; +} +function hoveringInside(event) { + const nextElement = getMouseDestination(event); + if (!nextElement) return false; + return contains(event.currentTarget, nextElement); +} +var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); +function movingToAnotherItem(event) { + let dest = getMouseDestination(event); + if (!dest) return false; + do { + if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; + dest = dest.parentElement; + } while (dest); + return false; +} +var useCompositeHover = createHook( + function useCompositeHover2(_a) { + var _b = _a, { + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover + } = _b, props = __objRest(_b, [ + "store", + "focusOnHover", + "blurOnHoverEnd" + ]); + const context = useCompositeContext(); + store = store || context; + invariant( + store, + "CompositeHover must be wrapped in a Composite component." + ); + const isMouseMoving = useIsMouseMoving(); + const onMouseMoveProp = props.onMouseMove; + const focusOnHoverProp = useBooleanEvent(focusOnHover); + const onMouseMove = useEvent((event) => { + onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (!focusOnHoverProp(event)) return; + if (!hasFocusWithin(event.currentTarget)) { + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (baseElement && !hasFocus(baseElement)) { + baseElement.focus(); + } + } + store == null ? void 0 : store.setActiveId(event.currentTarget.id); + }); + const onMouseLeaveProp = props.onMouseLeave; + const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); + const onMouseLeave = useEvent((event) => { + var _a2; + onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (hoveringInside(event)) return; + if (movingToAnotherItem(event)) return; + if (!focusOnHoverProp(event)) return; + if (!blurOnHoverEndProp(event)) return; + store == null ? void 0 : store.setActiveId(null); + (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }); + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName7, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js +var import_react17 = __toESM(require_react(), 1); +var TagName8 = "div"; +var useCollectionItem = createHook( + function useCollectionItem2(_a) { + var _b = _a, { + store, + shouldRegisterItem = true, + getItem = identity, + element + } = _b, props = __objRest(_b, [ + "store", + "shouldRegisterItem", + "getItem", + // @ts-expect-error This prop may come from a collection renderer. + "element" + ]); + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react17.useRef)(element); + (0, import_react17.useEffect)(() => { + const element2 = ref.current; + if (!id) return; + if (!element2) return; + if (!shouldRegisterItem) return; + const item = getItem({ id, element: element2 }); + return store == null ? void 0 : store.renderItem(item); + }, [id, shouldRegisterItem, getItem, store]); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref) + }); + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName8, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +var TagName9 = "button"; +function isEditableElement(element) { + if (isTextbox(element)) return true; + return element.tagName === "INPUT" && !isButton(element); +} +function getNextPageOffset(scrollingElement, pageUp = false) { + const height = scrollingElement.clientHeight; + const { top } = scrollingElement.getBoundingClientRect(); + const pageSize = Math.max(height * 0.875, height - 40) * 1.5; + const pageOffset = pageUp ? height - pageSize + top : pageSize + top; + if (scrollingElement.tagName === "HTML") { + return pageOffset + scrollingElement.scrollTop; + } + return pageOffset; +} +function getItemOffset(itemElement, pageUp = false) { + const { top } = itemElement.getBoundingClientRect(); + if (pageUp) { + return top + itemElement.clientHeight; + } + return top; +} +function findNextPageItemId(element, store, next, pageUp = false) { + var _a; + if (!store) return; + if (!next) return; + const { renderedItems } = store.getState(); + const scrollingElement = getScrollingElement(element); + if (!scrollingElement) return; + const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); + let id; + let prevDifference; + for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { + const previousId = id; + id = next(i2); + if (!id) break; + if (id === previousId) continue; + const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; + if (!itemElement) continue; + const itemOffset = getItemOffset(itemElement, pageUp); + const difference = itemOffset - nextPageOffset; + const absDifference = Math.abs(difference); + if (pageUp && difference <= 0 || !pageUp && difference >= 0) { + if (prevDifference !== void 0 && prevDifference < absDifference) { + id = previousId; + } + break; + } + prevDifference = absDifference; + } + return id; +} +function targetIsAnotherItem(event, store) { + if (isSelfTarget(event)) return false; + return isItem(store, event.target); +} +var useCompositeItem = createHook( + function useCompositeItem2(_a) { + var _b = _a, { + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp + } = _b, props = __objRest(_b, [ + "store", + "rowId", + "preventScrollOnKeyDown", + "moveOnKeyPress", + "tabbable", + "getItem", + "aria-setsize", + "aria-posinset" + ]); + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react18.useRef)(null); + const row = (0, import_react18.useContext)(CompositeRowContext); + const disabled = disabledFromProps(props); + const trulyDisabled = disabled && !props.accessibleWhenDisabled; + const { + rowId, + baseElement, + isActiveItem, + ariaSetSize, + ariaPosInSet, + isTabbable + } = useStoreStateObject(store, { + rowId(state) { + if (rowIdProp) return rowIdProp; + if (!state) return; + if (!(row == null ? void 0 : row.baseElement)) return; + if (row.baseElement !== state.baseElement) return; + return row.id; + }, + baseElement(state) { + return (state == null ? void 0 : state.baseElement) || void 0; + }, + isActiveItem(state) { + return !!state && state.activeId === id; + }, + ariaSetSize(state) { + if (ariaSetSizeProp != null) return ariaSetSizeProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaSetSize)) return; + if (row.baseElement !== state.baseElement) return; + return row.ariaSetSize; + }, + ariaPosInSet(state) { + if (ariaPosInSetProp != null) return ariaPosInSetProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaPosInSet)) return; + if (row.baseElement !== state.baseElement) return; + const itemsInRow = state.renderedItems.filter( + (item) => item.rowId === rowId + ); + return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); + }, + isTabbable(state) { + if (!(state == null ? void 0 : state.renderedItems.length)) return true; + if (state.virtualFocus) return false; + if (tabbable) return true; + if (state.activeId === null) return false; + const item = store == null ? void 0 : store.item(state.activeId); + if (item == null ? void 0 : item.disabled) return true; + if (!(item == null ? void 0 : item.element)) return true; + return state.activeId === id; + } + }); + const getItem = (0, import_react18.useCallback)( + (item) => { + var _a2; + const nextItem = __spreadProps(__spreadValues({}, item), { + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a2 = item.element) == null ? void 0 : _a2.textContent + }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react18.useRef)(false); + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (isPortalEvent(event)) return; + if (!id) return; + if (!store) return; + if (targetIsAnotherItem(event, store)) return; + const { virtualFocus, baseElement: baseElement2 } = store.getState(); + store.setActiveId(id); + if (isTextbox(event.currentTarget)) { + selectTextField(event.currentTarget); + } + if (!virtualFocus) return; + if (!isSelfTarget(event)) return; + if (isEditableElement(event.currentTarget)) return; + if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; + if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { + event.currentTarget.scrollIntoView({ + block: "nearest", + inline: "nearest" + }); + } + hasFocusedComposite.current = true; + const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); + if (fromComposite) { + focusSilently(baseElement2); + } else { + baseElement2.focus(); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + const state = store == null ? void 0 : store.getState(); + if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { + hasFocusedComposite.current = false; + event.preventDefault(); + event.stopPropagation(); + } + }); + const onKeyDownProp = props.onKeyDown; + const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!isSelfTarget(event)) return; + if (!store) return; + const { currentTarget } = event; + const state = store.getState(); + const item = store.item(id); + const isGrid2 = !!(item == null ? void 0 : item.rowId); + const isVertical = state.orientation !== "horizontal"; + const isHorizontal = state.orientation !== "vertical"; + const canHomeEnd = () => { + if (isGrid2) return true; + if (isHorizontal) return true; + if (!state.baseElement) return true; + if (!isTextField(state.baseElement)) return true; + return false; + }; + const keyMap = { + ArrowUp: (isGrid2 || isVertical) && store.up, + ArrowRight: (isGrid2 || isHorizontal) && store.next, + ArrowDown: (isGrid2 || isVertical) && store.down, + ArrowLeft: (isGrid2 || isHorizontal) && store.previous, + Home: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.first(); + } + return store == null ? void 0 : store.previous(-1); + }, + End: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.last(); + } + return store == null ? void 0 : store.next(-1); + }, + PageUp: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); + }, + PageDown: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); + } + }; + const action = keyMap[event.key]; + if (action) { + if (isTextbox(currentTarget)) { + const selection = getTextboxSelection(currentTarget); + const isLeft = isHorizontal && event.key === "ArrowLeft"; + const isRight = isHorizontal && event.key === "ArrowRight"; + const isUp = isVertical && event.key === "ArrowUp"; + const isDown = isVertical && event.key === "ArrowDown"; + if (isRight || isDown) { + const { length: valueLength } = getTextboxValue(currentTarget); + if (selection.end !== valueLength) return; + } else if ((isLeft || isUp) && selection.start !== 0) return; + } + const nextId = action(); + if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(nextId); + } + } + }); + const providerValue = (0, import_react18.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = __spreadProps(__spreadValues({ + id, + "data-active-item": isActiveItem || void 0 + }, props), { + ref: useMergeRefs(ref, props.ref), + tabIndex: isTabbable ? props.tabIndex : -1, + onFocus, + onBlurCapture, + onKeyDown + }); + props = useCommand(props); + props = useCollectionItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + })); + return removeUndefinedValues(__spreadProps(__spreadValues({}, props), { + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + })); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName9, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName10 = "div"; +function isSelected(storeValue, itemValue) { + if (itemValue == null) return; + if (storeValue == null) return false; + if (Array.isArray(storeValue)) { + return storeValue.includes(itemValue); + } + return storeValue === itemValue; +} +function getItemRole(popupRole) { + var _a; + const itemRoleByPopupRole = { + menu: "menuitem", + listbox: "option", + tree: "treeitem" + }; + const key = popupRole; + return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; +} +var useComboboxItem = createHook( + function useComboboxItem2(_a) { + var _b = _a, { + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp + } = _b, props = __objRest(_b, [ + "store", + "value", + "hideOnClick", + "setValueOnClick", + "selectValueOnClick", + "resetValueOnSelect", + "focusOnHover", + "moveOnKeyPress", + "getItem" + ]); + var _a2; + const context = useComboboxScopedContext(); + store = store || context; + invariant( + store, + "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." + ); + const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, { + resetValueOnSelectState: "resetValueOnSelect", + multiSelectable(state) { + return Array.isArray(state.selectedValue); + }, + selected(state) { + return isSelected(state.selectedValue, value); + } + }); + const getItem = (0, import_react19.useCallback)( + (item) => { + const nextItem = __spreadProps(__spreadValues({}, item), { value }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [value, getItemProp] + ); + setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; + hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; + const onClickProp = props.onClick; + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); + const resetValueOnSelectProp = useBooleanEvent( + (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable + ); + const hideOnClickProp = useBooleanEvent(hideOnClick); + const onClick = useEvent((event) => { + onClickProp == null ? void 0 : onClickProp(event); + if (event.defaultPrevented) return; + if (isDownloading(event)) return; + if (isOpeningInNewTab(event)) return; + if (value != null) { + if (selectValueOnClickProp(event)) { + if (resetValueOnSelectProp(event)) { + store == null ? void 0 : store.resetValue(); + } + store == null ? void 0 : store.setSelectedValue((prevValue) => { + if (!Array.isArray(prevValue)) return value; + if (prevValue.includes(value)) { + return prevValue.filter((v2) => v2 !== value); + } + return [...prevValue, value]; + }); + } + if (setValueOnClickProp(event)) { + store == null ? void 0 : store.setValue(value); + } + } + if (hideOnClickProp(event)) { + store == null ? void 0 : store.hide(); + } + }); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (!baseElement) return; + if (hasFocus(baseElement)) return; + const printable = event.key.length === 1; + if (printable || event.key === "Backspace" || event.key === "Delete") { + queueMicrotask(() => baseElement.focus()); + if (isTextField(baseElement)) { + store == null ? void 0 : store.setValue(baseElement.value); + } + } + }); + if (multiSelectable && selected != null) { + props = __spreadValues({ + "aria-selected": selected + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react19.useContext)(ComboboxListRoleContext); + props = __spreadProps(__spreadValues({ + role: getItemRole(popupRole), + children: value + }, props), { + onClick, + onKeyDown + }); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + // Dispatch a custom event on the combobox input when moving to an item + // with the keyboard so the Combobox component can enable inline + // autocompletion. + moveOnKeyPress: (event) => { + if (!moveOnKeyPressProp(event)) return false; + const moveEvent = new Event("combobox-item-move"); + const baseElement = store == null ? void 0 : store.getState().baseElement; + baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); + return true; + } + })); + props = useCompositeHover(__spreadValues({ store, focusOnHover }, props)); + return props; + } +); +var ComboboxItem = memo22( + forwardRef22(function ComboboxItem2(props) { + const htmlProps = useComboboxItem(props); + return createElement3(TagName10, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName11 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const comboboxId = store.useState((state) => { + var _a2; + return (_a2 = state.baseElement) == null ? void 0 : _a2.id; + }); + props = __spreadValues({ + htmlFor: comboboxId + }, props); + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName11, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js +var import_react20 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName12 = "div"; +function afterTimeout(timeoutMs, cb) { + const timeoutId = setTimeout(cb, timeoutMs); + return () => clearTimeout(timeoutId); +} +function afterPaint2(cb) { + let raf = requestAnimationFrame(() => { + raf = requestAnimationFrame(cb); + }); + return () => cancelAnimationFrame(raf); +} +function parseCSSTime(...times) { + return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { + const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; + const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; + if (currentTime > longestTime) return currentTime; + return longestTime; + }, 0); +} +function isHidden(mounted, hidden, alwaysVisible) { + return !alwaysVisible && hidden !== false && (!mounted || !!hidden); +} +var useDisclosureContent = createHook(function useDisclosureContent2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const context = useDisclosureProviderContext(); + store = store || context; + invariant( + store, + "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." + ); + const ref = (0, import_react20.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react20.useState)(null); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const animated = store.useState("animated"); + const contentElement = store.useState("contentElement"); + const otherElement = useStoreState(store.disclosure, "contentElement"); + useSafeLayoutEffect(() => { + if (!ref.current) return; + store == null ? void 0 : store.setContentElement(ref.current); + }, [store]); + useSafeLayoutEffect(() => { + let previousAnimated; + store == null ? void 0 : store.setState("animated", (animated2) => { + previousAnimated = animated2; + return true; + }); + return () => { + if (previousAnimated === void 0) return; + store == null ? void 0 : store.setState("animated", previousAnimated); + }; + }, [store]); + useSafeLayoutEffect(() => { + if (!animated) return; + if (!(contentElement == null ? void 0 : contentElement.isConnected)) { + setTransition(null); + return; + } + return afterPaint2(() => { + setTransition(open ? "enter" : mounted ? "leave" : null); + }); + }, [animated, contentElement, open, mounted]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!animated) return; + if (!transition) return; + if (!contentElement) return; + const stopAnimation = () => store == null ? void 0 : store.setState("animating", false); + const stopAnimationSync = () => (0, import_react_dom.flushSync)(stopAnimation); + if (transition === "leave" && open) return; + if (transition === "enter" && !open) return; + if (typeof animated === "number") { + const timeout2 = animated; + return afterTimeout(timeout2, stopAnimationSync); + } + const { + transitionDuration, + animationDuration, + transitionDelay, + animationDelay + } = getComputedStyle(contentElement); + const { + transitionDuration: transitionDuration2 = "0", + animationDuration: animationDuration2 = "0", + transitionDelay: transitionDelay2 = "0", + animationDelay: animationDelay2 = "0" + } = otherElement ? getComputedStyle(otherElement) : {}; + const delay = parseCSSTime( + transitionDelay, + animationDelay, + transitionDelay2, + animationDelay2 + ); + const duration = parseCSSTime( + transitionDuration, + animationDuration, + transitionDuration2, + animationDuration2 + ); + const timeout = delay + duration; + if (!timeout) { + if (transition === "enter") { + store.setState("animated", false); + } + stopAnimation(); + return; + } + const frameRate = 1e3 / 60; + const maxTimeout = Math.max(timeout - frameRate, 0); + return afterTimeout(maxTimeout, stopAnimationSync); + }, [store, animated, contentElement, otherElement, open, transition]); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react20.useMemo)(() => { + if (hidden) { + return __spreadProps(__spreadValues({}, styleProp), { display: "none" }); + } + return styleProp; + }, [hidden, styleProp]); + props = __spreadProps(__spreadValues({ + id, + "data-open": open || void 0, + "data-enter": transition === "enter" || void 0, + "data-leave": transition === "leave" || void 0, + hidden + }, props), { + ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), + style + }); + return removeUndefinedValues(props); +}); +var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { + const htmlProps = useDisclosureContent(props); + return createElement3(TagName12, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2(_a) { + var _b = _a, { + unmountOnHide + } = _b, props = __objRest(_b, [ + "unmountOnHide" + ]); + const context = useDisclosureProviderContext(); + const store = props.store || context; + const mounted = useStoreState( + store, + (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) + ); + if (mounted === false) return null; + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DisclosureContentImpl, __spreadValues({}, props)); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js +var import_react21 = __toESM(require_react(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const scopedContext = useComboboxScopedContext(true); + const context = useComboboxContext(); + store = store || context; + const scopedContextSameStore = !!store && store === scopedContext; + invariant( + store, + "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react21.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: "none" }) : props.style; + const multiSelectable = store.useState( + (state) => Array.isArray(state.selectedValue) + ); + const role = useAttribute(ref, "role", props.role); + const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; + const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; + const [hasListboxInside, setHasListboxInside] = (0, import_react21.useState)(false); + const contentElement = store.useState("contentElement"); + useSafeLayoutEffect(() => { + if (!mounted) return; + const element = ref.current; + if (!element) return; + if (contentElement !== element) return; + const callback = () => { + setHasListboxInside(!!element.querySelector("[role='listbox']")); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { + subtree: true, + childList: true, + attributeFilter: ["role"] + }); + callback(); + return () => observer.disconnect(); + }, [mounted, contentElement]); + if (!hasListboxInside) { + props = __spreadValues({ + role: "listbox", + "aria-multiselectable": ariaMultiSelectable + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = __spreadProps(__spreadValues({ + id, + hidden + }, props), { + ref: useMergeRefs(setContentElement, ref, props.ref), + style + }); + return removeUndefinedValues(props); + } +); +var ComboboxList = forwardRef22(function ComboboxList2(props) { + const htmlProps = useComboboxList(props); + return createElement3(TagName13, htmlProps); +}); + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_remove_accents = __toESM(require_remove_accents(), 1); +var import_compose8 = __toESM(require_compose(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); +var import_element24 = __toESM(require_element(), 1); +var import_components19 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/utils.mjs +var EMPTY_ARRAY3 = []; +var getCurrentValue = (filterDefinition, currentFilter) => { + if (filterDefinition.singleSelection) { + return currentFilter?.value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value; + } + if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { + return [currentFilter.value]; + } + return EMPTY_ARRAY3; +}; + +// packages/dataviews/build-module/hooks/use-elements.mjs +var import_element23 = __toESM(require_element(), 1); +var EMPTY_ARRAY4 = []; +function useElements({ + elements, + getElements +}) { + const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4; + const [records, setRecords] = (0, import_element23.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element23.useState)(false); + (0, import_element23.useEffect)(() => { + if (!getElements) { + setRecords(staticElements); + return; + } + let cancelled = false; + setIsLoading(true); + getElements().then((fetchedElements) => { + if (!cancelled) { + const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; + setRecords(dynamicElements); + } + }).catch(() => { + if (!cancelled) { + setRecords(staticElements); + } + }).finally(() => { + if (!cancelled) { + setIsLoading(false); + } + }); + return () => { + cancelled = true; + }; + }, [getElements, staticElements]); + return { + elements: records, + isLoading + }; +} + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +function normalizeSearchInput(input = "") { + return (0, import_remove_accents.default)(input.trim().toLowerCase()); +} +var getNewValue = (filterDefinition, currentFilter, value) => { + if (filterDefinition.singleSelection) { + return value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; + } + return [value]; +}; +function generateFilterElementCompositeItemId(prefix, filterElementValue) { + return `${prefix}-${filterElementValue}`; +} +var MultiSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-multi-selection", + { "is-selected": selected } + ), + children: selected && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Icon, { icon: check_default }) + } + ); +}; +var SingleSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-single-selection", + { "is-selected": selected } + ) + } + ); +}; +function ListBox({ view, filter, onChangeView }) { + const baseId = (0, import_compose8.useInstanceId)(ListBox, "dataviews-filter-list-box"); + const [activeCompositeId, setActiveCompositeId] = (0, import_element24.useState)( + // When there are one or less operators, the first item is set as active + // (by setting the initial `activeId` to `undefined`). + // With 2 or more operators, the focus is moved on the operators control + // (by setting the initial `activeId` to `null`), meaning that there won't + // be an active item initially. Focus is then managed via the + // `onFocusVisible` callback. + filter.operators?.length === 1 ? void 0 : null + ); + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + import_components19.Composite, + { + virtualFocus: true, + focusLoop: true, + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + role: "listbox", + className: "dataviews-filters__search-widget-listbox", + "aria-label": (0, import_i18n22.sprintf)( + /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ + (0, import_i18n22.__)("List of: %1$s"), + filter.name + ), + onFocusVisible: () => { + if (!activeCompositeId && filter.elements.length) { + setActiveCompositeId( + generateFilterElementCompositeItemId( + baseId, + filter.elements[0].value + ) + ); + } + }, + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Composite.Typeahead, {}), + children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + import_components19.Composite.Hover, + { + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + import_components19.Composite.Item, + { + id: generateFilterElementCompositeItemId( + baseId, + element.value + ), + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "div", + { + "aria-label": element.label, + role: "option", + className: "dataviews-filters__search-widget-listitem" + } + ), + onClick: () => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + } + } + ), + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes(element.value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: element.label }) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element24.useState)(""); + const deferredSearchValue = (0, import_element24.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element24.useMemo)(() => { + const normalizedSearch = normalizeSearchInput(deferredSearchValue); + return filter.elements.filter( + (item) => normalizeSearchInput(item.label).includes(normalizedSearch) + ); + }, [filter.elements, deferredSearchValue]); + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxProvider, + { + selectedValue: currentValue, + setSelectedValue: (value) => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map((_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value + }; + } + return _filter; + }) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + setValue: setSearchValue, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ComboboxLabel, + { + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.VisuallyHidden, { children: (0, import_i18n22.__)("Search items") }), + children: (0, import_i18n22.__)("Search items") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + Combobox, + { + autoSelect: "always", + placeholder: (0, import_i18n22.__)("Search"), + className: "dataviews-filters__search-widget-filter-combobox__input" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Icon, { icon: search_default }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxList, + { + className: "dataviews-filters__search-widget-filter-combobox-list", + alwaysVisible: true, + children: [ + matches.map((element) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxItem, + { + resetValueOnSelect: false, + value: element.value, + className: "dataviews-filters__search-widget-listitem", + hideOnClick: false, + setValueOnClick: false, + focusOnHover: true, + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes( + element.value + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ComboboxItemValue, + { + className: "dataviews-filters__search-widget-filter-combobox-item-value", + value: element.label + } + ), + !!element.description && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) + ] }) + ] + }, + element.value + ); + }), + !matches.length && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { children: (0, import_i18n22.__)("No results found") }) + ] + } + ) + ] + } + ); +} +function SearchWidget(props) { + const { elements, isLoading } = useElements({ + elements: props.filter.elements, + getElements: props.filter.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Spinner, {}) }); + } + if (elements.length === 0) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n22.__)("No elements found") }); + } + const Widget = elements.length > 10 ? ComboboxList22 : ListBox; + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Widget, { ...props, filter: { ...props.filter, elements } }); +} + +// packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs +var import_es6 = __toESM(require_es6(), 1); +var import_compose9 = __toESM(require_compose(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_components20 = __toESM(require_components(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +function InputWidget({ + filter, + view, + onChangeView, + fields +}) { + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const field = (0, import_element25.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Deactivate validation for filters. + isValid: {}, + // Configure getValue/setValue as if Item was a plain object. + getValue: ({ item }) => item[currentField.id], + setValue: ({ value }) => ({ + [currentField.id]: value + }) + }; + } + return currentField; + }, [fields, filter.field]); + const data = (0, import_element25.useMemo)(() => { + return (view.filters ?? []).reduce( + (acc, activeFilter) => { + acc[activeFilter.field] = activeFilter.value; + return acc; + }, + {} + ); + }, [view.filters]); + const handleChange = (0, import_compose9.useEvent)((updatedData) => { + if (!field || !currentFilter) { + return; + } + const nextValue = field.getValue({ item: updatedData }); + if ((0, import_es6.default)(nextValue, currentValue)) { + return; + } + onChangeView({ + ...view, + filters: (view.filters ?? []).map( + (_filter) => _filter.field === filter.field ? { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + // Consider empty strings as undefined: + // + // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records + // - empty string as value means "search empty string": returns only the records that have an empty string as value + // + // In practice, this means the filter will not be able to find an empty string as the value. + value: nextValue === "" ? void 0 : nextValue + } : _filter + ) + }); + }); + if (!field || !field.Edit || !currentFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + import_components20.Flex, + { + className: "dataviews-filters__user-input-widget", + gap: 2.5, + direction: "column", + children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + field.Edit, + { + hideLabelFromVision: true, + data, + field, + operator: currentFilter.operator, + onChange: handleChange + } + ) + } + ); +} + +// packages/dataviews/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); + +// packages/dataviews/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} + +// packages/dataviews/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} + +// packages/dataviews/node_modules/date-fns/addDays.js +function addDays(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) return _date; + _date.setDate(_date.getDate() + amount); + return _date; +} + +// packages/dataviews/node_modules/date-fns/addMonths.js +function addMonths(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) { + return _date; + } + const dayOfMonth = _date.getDate(); + const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); + endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); + const daysInMonth = endOfDesiredMonth.getDate(); + if (dayOfMonth >= daysInMonth) { + return endOfDesiredMonth; + } else { + _date.setFullYear( + endOfDesiredMonth.getFullYear(), + endOfDesiredMonth.getMonth(), + dayOfMonth + ); + return _date; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} + +// packages/dataviews/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} + +// packages/dataviews/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} + +// packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} + +// packages/dataviews/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} + +// packages/dataviews/node_modules/date-fns/addWeeks.js +function addWeeks(date, amount, options) { + return addDays(date, amount * 7, options); +} + +// packages/dataviews/node_modules/date-fns/addYears.js +function addYears(date, amount, options) { + return addMonths(date, amount * 12, options); +} + +// packages/dataviews/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} + +// packages/dataviews/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} + +// packages/dataviews/node_modules/date-fns/startOfMonth.js +function startOfMonth(date, options) { + const _date = toDate(date, options?.in); + _date.setDate(1); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = (token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format6 = args.formats[width] || args.formats[args.defaultWidth]; + return format6; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = (dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}; +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: (quarter) => quarter - 1 + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: (value) => parseInt(value, 10) + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: (index) => index + 1 + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// packages/dataviews/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} + +// packages/dataviews/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} + +// packages/dataviews/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// packages/dataviews/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, + // Year + y: function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone quarter + q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, + // Month + M: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, + // Stand-alone month + L: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, + // Local week of year + w: function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Local day of week + e: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone local day of week + c: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, + // ISO day of week + i: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // AM or PM + a: function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // AM, PM, midnight, noon + b: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // Hour [1-12] + h: function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (GMT) + O: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (specific non-location) + z: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Seconds timestamp + t: function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + } +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}; +var timeLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}; +var dateTimeLongFormatter = (pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +function warnOrThrowProtectedError(token, format6, input) { + const _message = message(token, format6, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +function message(token, format6, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} + +// packages/dataviews/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} + +// packages/dataviews/node_modules/date-fns/subDays.js +function subDays(date, amount, options) { + return addDays(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subMonths.js +function subMonths(date, amount, options) { + return addMonths(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subWeeks.js +function subWeeks(date, amount, options) { + return addWeeks(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subYears.js +function subYears(date, amount, options) { + return addYears(date, -amount, options); +} + +// packages/dataviews/build-module/utils/operators.mjs +var import_i18n23 = __toESM(require_i18n(), 1); +var import_element26 = __toESM(require_element(), 1); +var import_date = __toESM(require_date(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var filterTextWrappers = { + Name: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), + Value: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) +}; +function getRelativeDate(value, unit) { + switch (unit) { + case "days": + return subDays(/* @__PURE__ */ new Date(), value); + case "weeks": + return subWeeks(/* @__PURE__ */ new Date(), value); + case "months": + return subMonths(/* @__PURE__ */ new Date(), value); + case "years": + return subYears(/* @__PURE__ */ new Date(), value); + default: + return /* @__PURE__ */ new Date(); + } +} +var isNoneOperatorDefinition = { + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is none of"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ + (0, import_i18n23.__)("%1$s is none of: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter: ((item, field, filterValue) => { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return !filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return !filterValue.includes(fieldValue); + } + return false; + }), + selection: "multi" +}; +var OPERATORS = [ + { + name: OPERATOR_IS_ANY, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return filterValue.includes(fieldValue); + } + return false; + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NONE, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_IS_ALL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes all"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes all: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + return filterValue.every((value) => { + return field.getValue({ item })?.includes(value); + }); + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NOT_ALL, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_BETWEEN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Between (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ + (0, import_i18n23.__)( + "%1$s between (inc): %2$s and %3$s" + ), + filter.name, + activeElements[0].label[0], + activeElements[0].label[1] + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { + return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; + } + return false; + }, + selection: "custom" + }, + { + name: OPERATOR_IN_THE_PAST, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("In the past"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ + (0, import_i18n23.__)( + "%1$s is in the past: %2$s" + ), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); + }, + selection: "custom" + }, + { + name: OPERATOR_OVER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Over"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ + (0, import_i18n23.__)("%1$s is over: %2$s"), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue < targetDate; + }, + selection: "custom" + }, + { + name: OPERATOR_IS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue === field.getValue({ item }) || filterValue === void 0; + }, + selection: "single" + }, + { + name: OPERATOR_IS_NOT, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is not"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue !== field.getValue({ item }); + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ + (0, import_i18n23.__)("%1$s is less than: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue < filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue > filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is less than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue <= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue >= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is before: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate < filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is after: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate > filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or before: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate <= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or after: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate >= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Contains"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ + (0, import_i18n23.__)("%1$s contains: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Doesn't contain"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ + (0, import_i18n23.__)( + "%1$s doesn't contain: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_STARTS_WITH, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Starts with"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ + (0, import_i18n23.__)("%1$s starts with: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("On"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() === fieldDate.getTime(); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Not on"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() !== fieldDate.getTime(); + }, + selection: "single" + } +]; +var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name); +var getAllOperatorNames = () => OPERATORS.map((op) => op.name); +var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some( + (op) => op.name === name +); +var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var ENTER = "Enter"; +var SPACE = " "; +var FilterText = ({ + activeElements, + filterInView, + filter +}) => { + if (activeElements === void 0 || activeElements.length === 0) { + return filter.name; + } + const operator = getOperatorByName(filterInView?.operator); + if (operator !== void 0) { + return operator.filterText(filter, activeElements); + } + return (0, import_i18n24.sprintf)( + /* translators: 1: Filter name e.g.: "Unknown status for Author". */ + (0, import_i18n24.__)("Unknown status for %1$s"), + filter.name + ); +}; +function OperatorSelector({ + filter, + view, + onChangeView +}) { + const operatorOptions = filter.operators?.map((operator) => ({ + value: operator, + label: getOperatorByName(operator)?.label || operator + })); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const value = currentFilter?.operator || filter.operators[0]; + return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "flex-start", + className: "dataviews-filters__summary-operators-container", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components21.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.SelectControl, + { + className: "dataviews-filters__summary-operators-filter-select", + label: (0, import_i18n24.__)("Conditions"), + value, + options: operatorOptions, + onChange: (newValue) => { + const newOperator = newValue; + const currentOperator = currentFilter?.operator; + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + const currentOpSelectionModel = getOperatorByName( + currentOperator + )?.selection; + const newOpSelectionModel = getOperatorByName( + newOperator + )?.selection; + const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ + currentOpSelectionModel, + newOpSelectionModel + ].includes("custom"); + return { + ..._filter, + value: shouldResetValue ? void 0 : _filter.value, + operator: newOperator + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: newOperator, + value: void 0 + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + size: "small", + variant: "minimal", + hideLabelFromVision: true + } + ) + ] + } + ); +} +function Filter({ + addFilterRef, + openedFilter, + fields, + ...commonProps +}) { + const toggleRef = (0, import_element27.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element27.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Configure getValue as if Item was a plain object. + // See related input-widget.tsx + getValue: ({ item }) => item[currentField.id] + }; + } + return currentField; + }, [fields, filter.field]); + const { elements } = useElements({ + elements: filter.elements, + getElements: filter.getElements + }); + if (elements.length > 0) { + activeElements = elements.filter((element) => { + if (filter.singleSelection) { + return element.value === filterInView?.value; + } + return filterInView?.value?.includes(element.value); + }); + } else if (Array.isArray(filterInView?.value)) { + const label = filterInView.value.map((v2) => { + const formattedValue = field?.getValueFormatted({ + item: { [field.id]: v2 }, + field + }); + return formattedValue || String(v2); + }); + activeElements = [ + { + value: filterInView.value, + // @ts-ignore + label + } + ]; + } else if (typeof filterInView?.value === "object") { + activeElements = [ + { value: filterInView.value, label: filterInView.value } + ]; + } else if (filterInView?.value !== void 0) { + const label = field !== void 0 ? field.getValueFormatted({ + item: { [field.id]: filterInView.value }, + field + }) : String(filterInView.value); + activeElements = [ + { + value: filterInView.value, + label + } + ]; + } + const isPrimary = filter.isPrimary; + const isLocked = filterInView?.isLocked; + const hasValues = !isLocked && filterInView?.value !== void 0; + const canResetOrRemove = !isLocked && (!isPrimary || hasValues); + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Dropdown, + { + defaultOpen: openedFilter === filter.field, + contentClassName: "dataviews-filters__summary-popover", + popoverProps: { placement: "bottom-start", role: "dialog" }, + onClose: () => { + toggleRef.current?.focus(); + }, + renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Tooltip, + { + text: (0, import_i18n24.sprintf)( + /* translators: 1: Filter name. */ + (0, import_i18n24.__)("Filter by: %1$s"), + filter.name.toLowerCase() + ), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + "div", + { + className: clsx_default( + "dataviews-filters__summary-chip", + { + "has-reset": canResetOrRemove, + "has-values": hasValues, + "is-not-clickable": isLocked + } + ), + role: "button", + tabIndex: isLocked ? -1 : 0, + onClick: () => { + if (!isLocked) { + onToggle(); + } + }, + onKeyDown: (event) => { + if (!isLocked && [ENTER, SPACE].includes(event.key)) { + onToggle(); + event.preventDefault(); + } + }, + "aria-disabled": isLocked, + "aria-pressed": isOpen, + "aria-expanded": isOpen, + ref: toggleRef, + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + FilterText, + { + activeElements, + filterInView, + filter + } + ) + } + ) + } + ), + canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Tooltip, + { + text: isPrimary ? (0, import_i18n24.__)("Reset") : (0, import_i18n24.__)("Remove"), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + "button", + { + className: clsx_default( + "dataviews-filters__summary-chip-remove", + { "has-values": hasValues } + ), + onClick: () => { + onChangeView({ + ...view, + page: 1, + filters: view.filters?.filter( + (_filter) => _filter.field !== filter.field + ) + }); + if (!isPrimary) { + addFilterRef.current?.focus(); + } else { + toggleRef.current?.focus(); + } + }, + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components21.Icon, { icon: close_small_default }) + } + ) + } + ) + ] }), + renderContent: () => { + return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(OperatorSelector, { ...commonProps }), + commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + SearchWidget, + { + ...commonProps, + filter: { + ...commonProps.filter, + elements + } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(InputWidget, { ...commonProps, fields }) + ] }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs +var import_components22 = __toESM(require_components(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); +var import_element28 = __toESM(require_element(), 1); +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock(import_components22.privateApis); +function AddFilterMenu({ + filters, + view, + onChangeView, + setOpenedFilter, + triggerProps +}) { + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Menu4, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.TriggerButton, { ...triggerProps }), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.Popover, { children: inactiveFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Menu4.Item, + { + onClick: () => { + setOpenedFilter(filter.field); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: filter.field, + value: void 0, + operator: filter.operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.ItemLabel, { children: filter.name }) + }, + filter.field + ); + }) }) + ] }); +} +function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { + if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { + return null; + } + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + AddFilterMenu, + { + triggerProps: { + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components22.Button, + { + accessibleWhenDisabled: true, + size: "compact", + className: "dataviews-filters-button", + variant: "tertiary", + disabled: !inactiveFilters.length, + ref + } + ), + children: (0, import_i18n25.__)("Add filter") + }, + ...{ filters, view, onChangeView, setOpenedFilter } + } + ); +} +var add_filter_default = (0, import_element28.forwardRef)(AddFilter); + +// packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs +var import_components23 = __toESM(require_components(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +function ResetFilter({ + filters, + view, + onChangeView +}) { + const isPrimary = (field) => filters.some( + (_filter) => _filter.field === field && _filter.isPrimary + ); + const isDisabled = !view.search && !view.filters?.some( + (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) + ); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components23.Button, + { + disabled: isDisabled, + accessibleWhenDisabled: true, + size: "compact", + variant: "tertiary", + className: "dataviews-filters__reset-button", + onClick: () => { + onChangeView({ + ...view, + page: 1, + search: "", + filters: view.filters?.filter((f2) => !!f2.isLocked) || [] + }); + }, + children: (0, import_i18n26.__)("Reset") + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs +var import_element29 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element29.useMemo)(() => { + const filters = []; + fields.forEach((field) => { + if (field.filterBy === false || !field.hasElements && !field.Edit) { + return; + } + const operators = field.filterBy.operators; + const isPrimary = !!field.filterBy?.isPrimary; + const isLocked = view.filters?.some( + (f2) => f2.field === field.id && !!f2.isLocked + ) ?? false; + filters.push({ + field: field.id, + name: field.label, + elements: field.elements, + getElements: field.getElements, + hasElements: field.hasElements, + singleSelection: operators.some( + (op) => isSingleSelectionOperator(op) + ), + operators, + isVisible: isLocked || isPrimary || !!view.filters?.some( + (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) + ), + isPrimary, + isLocked + }); + }); + filters.sort((a2, b2) => { + if (a2.isLocked && !b2.isLocked) { + return -1; + } + if (!a2.isLocked && b2.isLocked) { + return 1; + } + if (a2.isPrimary && !b2.isPrimary) { + return -1; + } + if (!a2.isPrimary && b2.isPrimary) { + return 1; + } + return a2.name.localeCompare(b2.name); + }); + return filters; + }, [fields, view]); +} +var use_filters_default = useFilters; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +function Filters({ className }) { + const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element30.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element30.useRef)(null); + const filters = use_filters_default(fields, view); + const addFilter = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + add_filter_default, + { + filters, + view, + onChangeView, + ref: addFilterRef, + setOpenedFilter + }, + "add-filter" + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + if (visibleFilters.length === 0) { + return null; + } + const filterComponents = [ + ...visibleFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + Filter, + { + filter, + view, + fields, + onChangeView, + addFilterRef, + openedFilter + }, + filter.field + ); + }), + addFilter + ]; + filterComponents.push( + /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + ResetFilter, + { + filters, + view, + onChangeView + }, + "reset-filters" + ) + ); + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + gap: "sm", + style: { width: "fit-content" }, + wrap: "wrap", + className, + children: filterComponents + } + ); +} +var filters_default = (0, import_element30.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element31 = __toESM(require_element(), 1); +var import_components24 = __toESM(require_components(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); +function FiltersToggle() { + const { + filters, + view, + onChangeView, + setOpenedFilter, + isShowingFilter, + setIsShowingFilter + } = (0, import_element31.useContext)(dataviews_context_default); + const buttonRef = (0, import_element31.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element31.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + const hasVisibleFilters = !!visibleFilters.length; + if (filters.length === 0) { + return null; + } + const addFilterButtonProps = { + label: (0, import_i18n27.__)("Add filter"), + "aria-expanded": false, + isPressed: false + }; + const toggleFiltersButtonProps = { + label: (0, import_i18n27._x)("Filter", "verb"), + "aria-expanded": isShowingFilter, + isPressed: isShowingFilter, + onClick: () => { + if (!isShowingFilter) { + setOpenedFilter(null); + } + setIsShowingFilter(!isShowingFilter); + } + }; + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + AddFilterMenu, + { + filters, + view, + onChangeView: onChangeViewWithFilterVisibility, + setOpenedFilter, + triggerProps: { render: buttonComponent } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + FilterVisibilityToggle, + { + buttonRef, + filtersCount: view.filters?.length, + children: buttonComponent + } + ) }); +} +function FilterVisibilityToggle({ + buttonRef, + filtersCount, + children +}) { + (0, import_element31.useEffect)( + () => () => { + buttonRef.current?.focus(); + }, + [buttonRef] + ); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ + children, + !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) + ] }); +} +var toggle_default = FiltersToggle; + +// packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs +var import_element32 = __toESM(require_element(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element32.useContext)(dataviews_context_default); + if (!isShowingFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(filters_default, { ...props }); +} +var filters_toggled_default = FiltersToggled; + +// packages/dataviews/build-module/components/dataviews-layout/index.mjs +var import_element33 = __toESM(require_element(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId, + getItemLevel, + isLoading, + view, + onChangeView, + selection, + onChangeSelection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + defaultLayouts, + empty = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: (0, import_i18n28.__)("No results") }) + } = (0, import_element33.useContext)(dataviews_context_default); + const ViewComponent = VIEW_LAYOUTS.find( + (v2) => v2.type === view.type && defaultLayouts[v2.type] + )?.component; + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + ViewComponent, + { + className, + actions, + data, + fields, + getItemId, + getItemLevel, + isLoading, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + renderItemLink, + isItemClickable, + view, + empty + } + ); +} + +// packages/dataviews/build-module/components/dataviews-footer/index.mjs +var import_element34 = __toESM(require_element(), 1); +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +var EMPTY_ARRAY5 = []; +function DataViewsFooter() { + const { + view, + paginationInfo: { totalItems = 0, totalPages }, + data, + actions = EMPTY_ARRAY5 + } = (0, import_element34.useContext)(dataviews_context_default); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) { + return null; + } + return !!totalItems && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: "dataviews-footer", + gap: "sm", + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(BulkActionsFooter, {}), + /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(dataviews_pagination_default, {}) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-search/index.mjs +var import_i18n29 = __toESM(require_i18n(), 1); +var import_element35 = __toESM(require_element(), 1); +var import_components25 = __toESM(require_components(), 1); +var import_compose10 = __toESM(require_compose(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +var DataViewsSearch = (0, import_element35.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element35.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element35.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element35.useRef)(onChangeView); + const viewRef = (0, import_element35.useRef)(view); + (0, import_element35.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element35.useEffect)(() => { + if (debouncedSearch !== viewRef.current?.search) { + onChangeViewRef.current({ + ...viewRef.current, + page: 1, + search: debouncedSearch + }); + } + }, [debouncedSearch]); + const searchLabel = label || (0, import_i18n29.__)("Search"); + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + import_components25.SearchControl, + { + className: "dataviews-search", + onChange: setSearch, + value: search, + label: searchLabel, + placeholder: searchLabel, + size: "compact" + } + ); +}); +var dataviews_search_default = DataViewsSearch; + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_components27 = __toESM(require_components(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_warning = __toESM(require_warning(), 1); +var import_compose11 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +var import_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element36.useContext)(dataviews_context_default); + const { view, onChangeView } = context; + const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; + if (!context.hasInfiniteScrollHandler) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components26.ToggleControl, + { + label: (0, import_i18n30.__)("Enable infinite scroll"), + help: (0, import_i18n30.__)( + "Automatically load more content as you scroll, instead of showing pagination links." + ), + checked: infiniteScrollEnabled, + onChange: (newValue) => { + onChangeView({ + ...view, + infiniteScrollEnabled: newValue + }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu5 } = unlock(import_components27.privateApis); +var DATAVIEWS_CONFIG_POPOVER_PROPS = { + className: "dataviews-config__popover", + placement: "bottom-end", + offset: 9 +}; +function ViewTypeMenu() { + const { view, onChangeView, defaultLayouts } = (0, import_element37.useContext)(dataviews_context_default); + const availableLayouts = Object.keys(defaultLayouts); + if (availableLayouts.length <= 1) { + return null; + } + const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Menu5, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Menu5.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + size: "compact", + icon: activeView?.icon, + label: (0, import_i18n31.__)("Layout") + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Menu5.Popover, { children: availableLayouts.map((layout) => { + const config = VIEW_LAYOUTS.find( + (v2) => v2.type === layout + ); + if (!config) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Menu5.RadioItem, + { + value: layout, + name: "view-actions-available-view", + checked: layout === view.type, + hideOnClick: true, + onChange: (e2) => { + switch (e2.target.value) { + case "list": + case "grid": + case "table": + case "pickerGrid": + case "pickerTable": + case "activity": + const viewWithoutLayout = { ...view }; + if ("layout" in viewWithoutLayout) { + delete viewWithoutLayout.layout; + } + return onChangeView({ + ...viewWithoutLayout, + type: e2.target.value, + ...defaultLayouts[e2.target.value] + }); + } + (0, import_warning.default)("Invalid dataview"); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Menu5.ItemLabel, { children: config.label }) + }, + layout + ); + }) }) + ] }); +} +function SortFieldControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const orderOptions = (0, import_element37.useMemo)(() => { + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + return sortableFields.map((field) => { + return { + label: field.label, + value: field.id + }; + }); + }, [fields]); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.SelectControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n31.__)("Sort by"), + value: view.sort?.field, + options: orderOptions, + onChange: (value) => { + onChangeView({ + ...view, + sort: { + direction: view?.sort?.direction || "desc", + field: value + }, + showLevels: false + }); + } + } + ); +} +function SortDirectionControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + if (sortableFields.length === 0) { + return null; + } + let value = view.sort?.direction; + if (!value && view.sort?.field) { + value = "desc"; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControl, + { + className: "dataviews-view-config__sort-direction", + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Order"), + value, + onChange: (newDirection) => { + if (newDirection === "asc" || newDirection === "desc") { + onChangeView({ + ...view, + sort: { + direction: newDirection, + field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. + fields.find( + (field) => field.enableSorting !== false + )?.id || "" + }, + showLevels: false + }); + return; + } + (0, import_warning.default)("Invalid direction"); + }, + children: SORTING_DIRECTIONS.map((direction) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControlOptionIcon, + { + value: direction, + icon: sortIcons[direction], + label: sortLabels[direction] + }, + direction + ); + }) + } + ); +} +function ItemsPerPageControl() { + const { view, config, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const { infiniteScrollEnabled } = view; + if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControl, + { + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Items per page"), + value: view.perPage || 10, + disabled: !view?.sort?.field, + onChange: (newItemsPerPage) => { + const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); + onChangeView({ + ...view, + perPage: newItemsPerPageNumber, + page: 1 + }); + }, + children: config.perPageSizes.map((value) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControlOption, + { + value, + label: value.toString() + }, + value + ); + }) + } + ); +} +function SettingsSection({ + title, + description, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_components27.__experimentalGrid, { columns: 12, className: "dataviews-settings-section", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "dataviews-settings-section__sidebar", children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: title + } + ), + description && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalText, + { + variant: "muted", + className: "dataviews-settings-section__description", + children: description + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalGrid, + { + columns: 8, + gap: 4, + className: "dataviews-settings-section__content", + children + } + ) + ] }); +} +function DataviewsViewConfigDropdown() { + const { view } = (0, import_element37.useContext)(dataviews_context_default); + const popoverId = (0, import_compose11.useInstanceId)( + _DataViewsViewConfig, + "dataviews-view-config-dropdown" + ); + const activeLayout = VIEW_LAYOUTS.find( + (layout) => layout.type === view.type + ); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Dropdown, + { + expandOnMobile: true, + popoverProps: { + ...DATAVIEWS_CONFIG_POPOVER_PROPS, + id: popoverId + }, + renderToggle: ({ onToggle, isOpen }) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + size: "compact", + icon: cog_default, + label: (0, import_i18n31._x)("View options", "View is used as a noun"), + onClick: onToggle, + "aria-expanded": isOpen ? "true" : "false", + "aria-controls": popoverId + } + ); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(SettingsSection, { title: (0, import_i18n31.__)("Appearance"), children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "is-divided-in-two", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SortFieldControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SortDirectionControl, {}) + ] + } + ), + !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(activeLayout.viewConfigOptions, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InfiniteScrollToggle, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ItemsPerPageControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PropertiesSection, {}) + ] }) + } + ) + } + ) + } + ); +} +function _DataViewsViewConfig() { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ViewTypeMenu, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DataviewsViewConfigDropdown, {}) + ] }); +} +var DataViewsViewConfig = (0, import_element37.memo)(_DataViewsViewConfig); +var dataviews_view_config_default = DataViewsViewConfig; + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_components28 = __toESM(require_components(), 1); +var import_element38 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs +function getCustomValidity(isValid2, validity) { + let customValidity; + if (isValid2?.required && validity?.required) { + customValidity = validity?.required?.message ? validity.required : void 0; + } else if (isValid2?.pattern && validity?.pattern) { + customValidity = validity.pattern; + } else if (isValid2?.min && validity?.min) { + customValidity = validity.min; + } else if (isValid2?.max && validity?.max) { + customValidity = validity.max; + } else if (isValid2?.minLength && validity?.minLength) { + customValidity = validity.minLength; + } else if (isValid2?.maxLength && validity?.maxLength) { + customValidity = validity.maxLength; + } else if (isValid2?.elements && validity?.elements) { + customValidity = validity.elements; + } else if (validity?.custom) { + customValidity = validity.custom; + } + return customValidity; +} + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var { ValidatedCheckboxControl } = unlock(import_components28.privateApis); +function Checkbox({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, label, description, isValid: isValid2 } = field; + const onChangeControl = (0, import_element38.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [data, getValue, onChange, setValue]); + return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + ValidatedCheckboxControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/combobox.mjs +var import_components29 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var { ValidatedComboboxControl } = unlock(import_components29.privateApis); +function Combobox3({ + data, + field, + onChange, + hideLabelFromVision, + validity +}) { + const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element39.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_components29.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( + ValidatedComboboxControl, + { + required: !!field.isValid?.required, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + placeholder, + options: elements, + onChange: onChangeControl, + hideLabelFromVision, + allowReset: true, + expandOnFocus: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_components31 = __toESM(require_components(), 1); +var import_element41 = __toESM(require_element(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_date3 = __toESM(require_date(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs +var import_components30 = __toESM(require_components(), 1); +var import_element40 = __toESM(require_element(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +var TIME_UNITS_OPTIONS = { + [OPERATOR_IN_THE_PAST]: [ + { value: "days", label: (0, import_i18n32.__)("Days") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks") }, + { value: "months", label: (0, import_i18n32.__)("Months") }, + { value: "years", label: (0, import_i18n32.__)("Years") } + ], + [OPERATOR_OVER]: [ + { value: "days", label: (0, import_i18n32.__)("Days ago") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks ago") }, + { value: "months", label: (0, import_i18n32.__)("Months ago") }, + { value: "years", label: (0, import_i18n32.__)("Years ago") } + ] +}; +function RelativeDateControl({ + className, + data, + field, + onChange, + hideLabelFromVision, + operator +}) { + const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; + const { id, label, getValue, setValue } = field; + const fieldValue = getValue({ item: data }); + const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; + const onChangeValue = (0, import_element40.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element40.useCallback)( + (newUnit) => onChange( + setValue({ + item: data, + value: { value: relValue, unit: newUnit } + }) + ), + [onChange, setValue, data, relValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.BaseControl, + { + id, + className: clsx_default(className, "dataviews-controls__relative-date"), + label, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Stack, { direction: "row", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.__experimentalNumberControl, + { + __next40pxDefaultSize: true, + className: "dataviews-controls__relative-date-number", + spinControls: "none", + min: 1, + step: 1, + value: relValue, + onChange: onChangeValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.SelectControl, + { + className: "dataviews-controls__relative-date-unit", + __next40pxDefaultSize: true, + label: (0, import_i18n32.__)("Unit"), + value: unit, + options, + onChange: onChangeUnit, + hideLabelFromVision: true + } + ) + ] }) + } + ); +} + +// packages/dataviews/build-module/field-types/utils/parse-date-time.mjs +var import_date2 = __toESM(require_date(), 1); +function parseDateTime(dateTimeString) { + if (!dateTimeString) { + return null; + } + const parsed = (0, import_date2.getDate)(dateTimeString); + return parsed && isValid(parsed) ? parsed : null; +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar, ValidatedInputControl } = unlock(import_components31.privateApis); +var formatDateTime = (date) => { + if (!date) { + return ""; + } + if (typeof date === "string") { + return date; + } + return format(date, "yyyy-MM-dd'T'HH:mm"); +}; +function CalendarDateTimeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, description, setValue, getValue, isValid: isValid2 } = field; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element41.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element41.useRef)(null); + const validationTimeoutRef = (0, import_element41.useRef)(); + const previousFocusRef = (0, import_element41.useRef)(null); + const onChangeCallback = (0, import_element41.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element41.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element41.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + let finalDateTime = newDate; + if (value) { + const currentDateTime = parseDateTime(value); + if (currentDateTime) { + finalDateTime = new Date(newDate); + finalDateTime.setHours(currentDateTime.getHours()); + finalDateTime.setMinutes( + currentDateTime.getMinutes() + ); + } + } + dateTimeValue = finalDateTime.toISOString(); + onChangeCallback(dateTimeValue); + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + } else { + onChangeCallback(void 0); + } + previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; + validationTimeoutRef.current = setTimeout(() => { + if (inputControlRef.current) { + inputControlRef.current.focus(); + inputControlRef.current.blur(); + onChangeCallback(dateTimeValue); + if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { + previousFocusRef.current.focus(); + } + } + }, 0); + }, + [onChangeCallback, value] + ); + const handleManualDateTimeChange = (0, import_element41.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = new Date(newValue); + onChangeCallback(dateTime.toISOString()); + const parsedDate = parseDateTime(dateTime.toISOString()); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } else { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const { format: fieldFormat } = field; + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date3.getSettings)().l10n.startOfWeek; + const { + timezone: { string: timezoneString } + } = (0, import_date3.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components31.BaseControl, + { + id, + label: displayLabel, + help: description, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + DateCalendar, + { + style: { width: "100%" }, + selected: value ? parseDateTime(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + ValidatedInputControl, + { + ref: inputControlRef, + __next40pxDefaultSize: true, + required: !!isValid2?.required, + customValidity: getCustomValidity(isValid2, validity), + type: "datetime-local", + label: (0, import_i18n33.__)("Date time"), + hideLabelFromVision: true, + value: value ? formatDateTime( + parseDateTime(value) || void 0 + ) : "", + onChange: handleManualDateTimeChange + } + ) + ] }) + } + ); +} +function DateTime({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__datetime", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + CalendarDateTimeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/date.mjs +var import_components32 = __toESM(require_components(), 1); +var import_element42 = __toESM(require_element(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); +var import_date4 = __toESM(require_date(), 1); +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock(import_components32.privateApis); +var DATE_PRESETS = [ + { + id: "today", + label: (0, import_i18n34.__)("Today"), + getValue: () => (0, import_date4.getDate)(null) + }, + { + id: "yesterday", + label: (0, import_i18n34.__)("Yesterday"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 1); + } + }, + { + id: "past-week", + label: (0, import_i18n34.__)("Past week"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 7); + } + }, + { + id: "past-month", + label: (0, import_i18n34.__)("Past month"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subMonths(today, 1); + } + } +]; +var DATE_RANGE_PRESETS = [ + { + id: "last-7-days", + label: (0, import_i18n34.__)("Last 7 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 7), today]; + } + }, + { + id: "last-30-days", + label: (0, import_i18n34.__)("Last 30 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 30), today]; + } + }, + { + id: "month-to-date", + label: (0, import_i18n34.__)("Month to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfMonth(today), today]; + } + }, + { + id: "last-year", + label: (0, import_i18n34.__)("Last year"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subYears(today, 1), today]; + } + }, + { + id: "year-to-date", + label: (0, import_i18n34.__)("Year to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfYear(today), today]; + } + } +]; +var parseDate = (dateString) => { + if (!dateString) { + return null; + } + const parsed = (0, import_date4.getDate)(dateString); + return parsed && isValid(parsed) ? parsed : null; +}; +var formatDate = (date) => { + if (!date) { + return ""; + } + return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); +}; +function ValidatedDateControl({ + field, + validity, + inputRefs, + isTouched, + setIsTouched, + children +}) { + const { isValid: isValid2 } = field; + const [customValidity, setCustomValidity] = (0, import_element42.useState)(void 0); + const validateRefs = (0, import_element42.useCallback)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + for (const ref of refs) { + const input = ref.current; + if (input && !input.validity.valid) { + setCustomValidity({ + type: "invalid", + message: input.validationMessage + }); + return; + } + } + setCustomValidity(void 0); + }, [inputRefs]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + for (const ref of refs) { + const input = ref.current; + if (input) { + input.setCustomValidity( + result?.type === "invalid" && result.message ? result.message : "" + ); + } + } + }, [inputRefs, isValid2, validity]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const handleInvalid = (event) => { + event.preventDefault(); + setIsTouched(true); + }; + for (const ref of refs) { + ref.current?.addEventListener("invalid", handleInvalid); + } + return () => { + for (const ref of refs) { + ref.current?.removeEventListener("invalid", handleInvalid); + } + }; + }, [inputRefs, setIsTouched]); + (0, import_element42.useEffect)(() => { + if (!isTouched) { + return; + } + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + if (result) { + setCustomValidity(result); + } else { + validateRefs(); + } + }, [isTouched, isValid2, validity, validateRefs]); + const onBlur = (event) => { + if (isTouched) { + return; + } + if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { + setIsTouched(true); + } + }; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { onBlur, children: [ + children, + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + "p", + { + className: clsx_default( + "components-validated-control__indicator", + customValidity.type === "invalid" ? "is-invalid" : void 0 + ), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Icon, + { + className: "components-validated-control__indicator-icon", + icon: error_default, + size: 16, + fill: "currentColor" + } + ), + customValidity.message + ] + } + ) }) + ] }); +} +function CalendarDateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { + id, + label, + setValue, + getValue, + isValid: isValid2, + format: fieldFormat + } = field; + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const validityTargetRef = (0, import_element42.useRef)(null); + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element42.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (newValue) => { + onChangeCallback(newValue); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const { + timezone: { string: timezoneString } + } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: validityTargetRef, + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + disabled: !!selectedPresetId, + accessibleWhenDisabled: false, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: validityTargetRef, + type: "date", + label: (0, import_i18n34.__)("Date"), + hideLabelFromVision: true, + value, + onChange: handleManualDateChange, + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + DateCalendar2, + { + style: { width: "100%" }, + selected: value ? parseDate(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function CalendarDateRangeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, getValue, setValue, format: fieldFormat } = field; + let value; + const fieldValue = getValue({ item: data }); + if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { + value = fieldValue; + } + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const selectedRange = (0, import_element42.useMemo)(() => { + if (!value) { + return { from: void 0, to: void 0 }; + } + const [from, to] = value; + return { + from: parseDate(from) || void 0, + to: parseDate(to) || void 0 + }; + }, [value]); + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const fromInputRef = (0, import_element42.useRef)(null); + const toInputRef = (0, import_element42.useRef)(null); + const updateDateRange = (0, import_element42.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element42.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (fromOrTo, newValue) => { + const [currentFrom, currentTo] = value || [ + void 0, + void 0 + ]; + const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; + const updatedTo = fromOrTo === "to" ? newValue : currentTo; + updateDateRange(updatedFrom, updatedTo); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [value, updateDateRange] + ); + const { timezone } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (field.isValid?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!field.isValid?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: [fromInputRef, toInputRef], + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_RANGE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + accessibleWhenDisabled: false, + disabled: !!selectedPresetId, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "space-between", + className: "dataviews-controls__date-range-inputs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: fromInputRef, + type: "date", + label: (0, import_i18n34.__)("From"), + hideLabelFromVision: true, + value: value?.[0], + onChange: (newValue) => handleManualDateChange("from", newValue), + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: toInputRef, + type: "date", + label: (0, import_i18n34.__)("To"), + hideLabelFromVision: true, + value: value?.[1], + onChange: (newValue) => handleManualDateChange("to", newValue), + required: !!field.isValid?.required + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + DateRangeCalendar, + { + style: { width: "100%" }, + selected: selectedRange, + onSelect: onSelectCalendarRange, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezone.string || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function DateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__date", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + if (operator === OPERATOR_BETWEEN) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + CalendarDateRangeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + CalendarDateControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components34 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element43 = __toESM(require_element(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components33.privateApis); +function ValidatedText({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + type, + prefix, + suffix, + validity +}) { + const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element43.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + ValidatedInputControl2, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + hideLabelFromVision, + type, + prefix, + suffix, + pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components34.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components34.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components35 = __toESM(require_components(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components35.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components36.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components37 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components37.privateApis); +function toNumberOrEmpty(value) { + if (value === "" || value === void 0) { + return ""; + } + const number = Number(value); + return Number.isFinite(number) ? number : ""; +} +function BetweenControls({ + value, + onChange, + hideLabelFromVision, + step +}) { + const [min = "", max = ""] = value; + const onChangeMin = (0, import_element44.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element44.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_components37.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Min."), + value: min, + max: max ? Number(max) - step : void 0, + onChange: onChangeMin, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Max."), + value: max, + min: min ? Number(min) + step : void 0, + onChange: onChangeMax, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ) + ] }) + } + ); +} +function ValidatedNumber({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + const decimals = field.format?.decimals ?? 0; + const step = Math.pow(10, Math.abs(decimals) * -1); + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + // Do not convert an empty string or undefined to a number, + // otherwise there's a mismatch between the UI control (empty) + // and the data relied by onChange (0). + value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) + }) + ); + }, + [data, onChange, setValue] + ); + const onChangeBetweenControls = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + if (operator === OPERATOR_BETWEEN) { + let valueBetween = ["", ""]; + if (Array.isArray(value) && value.length === 2 && value.every( + (element) => typeof element === "number" || element === "" + )) { + valueBetween = value; + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedNumberControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + value, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + step, + min: isValid2.min ? isValid2.min.constraint : void 0, + max: isValid2.max ? isValid2.max.constraint : void 0 + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/integer.mjs +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components38.privateApis); +function Radio({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = getValue({ item: data }); + const onChangeControl = (0, import_element45.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components38.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + ValidatedRadioControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + onChange: onChangeControl, + options: elements, + selected: value, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/select.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components39.privateApis); +function Select({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { type, label, description, getValue, setValue, isValid: isValid2 } = field; + const isMultiple = type === "array"; + const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); + const onChangeControl = (0, import_element46.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedSelectControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + options: elements, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + multiple: isMultiple + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/text.mjs +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function Text2({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + prefix: prefix ? (0, import_element47.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element47.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleControl } = unlock(import_components40.privateApis); +function Toggle({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const onChangeControl = (0, import_element48.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + ValidatedToggleControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/textarea.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +var { ValidatedTextareaControl } = unlock(import_components41.privateApis); +function Textarea({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { rows = 4 } = config || {}; + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }); + const onChangeControl = (0, import_element49.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + ValidatedTextareaControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + rows, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleGroupControl } = unlock(import_components42.privateApis); +function ToggleGroup({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ValidatedToggleGroupControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + __next40pxDefaultSize: true, + isBlock: true, + label: field.label, + help: selectedOption?.description || field.description, + onChange: onChangeControl, + value, + hideLabelFromVision, + children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + import_components42.__experimentalToggleGroupControlOption, + { + label: el.label, + value: el.value + }, + el.value + )) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/array.mjs +var import_components43 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +var { ValidatedFormTokenField } = unlock(import_components43.privateApis); +function ArrayControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const arrayValueAsElements = (0, import_element51.useMemo)( + () => Array.isArray(value) ? value.map((token) => { + const element = elements?.find( + (suggestion) => suggestion.value === token + ); + return element || { value: token, label: token }; + }) : [], + [value, elements] + ); + const onChangeControl = (0, import_element51.useCallback)( + (tokens) => { + const valueTokens = tokens.map((token) => { + if (typeof token === "object" && "value" in token) { + return token.value; + } + return token; + }); + onChange(setValue({ item: data, value: valueTokens })); + }, + [onChange, setValue, data] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + ValidatedFormTokenField, + { + required: !!isValid2?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label: hideLabelFromVision ? void 0 : label, + value: arrayValueAsElements, + onChange: onChangeControl, + placeholder, + suggestions: elements?.map((element) => element.value), + __experimentalValidateInput: (token) => { + if (field.isValid?.elements && elements) { + return elements.some( + (element) => element.value === token || element.label === token + ); + } + return true; + }, + __experimentalExpandOnFocus: elements && elements.length > 0, + __experimentalShowHowTo: !field.isValid?.elements, + displayTransform: (token) => { + if (typeof token === "object" && "label" in token) { + return token.label; + } + if (typeof token === "string" && elements) { + const element = elements.find( + (el) => el.value === token + ); + return element?.label || token; + } + return token; + }, + __experimentalRenderItem: ({ item }) => { + if (typeof item === "string" && elements) { + const element = elements.find( + (el) => el.value === item + ); + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: item }); + } + } + ); +} + +// node_modules/colord/index.mjs +var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; +var t = function(r3) { + return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; +}; +var n = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; +}; +var e = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; +}; +var u = function(r3) { + return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; +}; +var a = function(r3) { + return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; +}; +var o = function(r3) { + return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; +}; +var i = /^#([0-9a-f]{3,8})$/i; +var s = function(r3) { + var t2 = r3.toString(16); + return t2.length < 2 ? "0" + t2 : t2; +}; +var h = function(r3) { + var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0; + return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; +}; +var b = function(r3) { + var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6; + return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 }; +}; +var g = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; +}; +var d = function(r3) { + return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; +}; +var f = function(r3) { + return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; +}; +var c = function(r3) { + return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; +}; +var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var y = { string: [[function(r3) { + var t2 = i.exec(r3); + return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; +}, "hex"], [function(r3) { + var t2 = v.exec(r3) || m.exec(r3); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; +}, "rgb"], [function(t2) { + var n2 = l.exec(t2) || p.exec(t2); + if (!n2) return null; + var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(a2); +}, "hsl"]], object: [[function(r3) { + var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2; + return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; +}, "rgb"], [function(r3) { + var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2; + if (!t(n2) || !t(e2) || !t(u2)) return null; + var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) }); + return f(i2); +}, "hsl"], [function(r3) { + var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; + if (!t(n2) || !t(a2) || !t(o2)) return null; + var h2 = (function(r4) { + return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; + })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) }); + return b(h2); +}, "hsv"]] }; +var N = function(r3, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r3); + if (e2) return [e2, t2[n2][1]]; + } + return [null, void 0]; +}; +var x = function(r3) { + return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; +}; +var M = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; +}; +var H = function(r3) { + return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; +}; +var $ = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; +}; +var j = (function() { + function r3(r4) { + this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r3.prototype.isValid = function() { + return null !== this.parsed; + }, r3.prototype.brightness = function() { + return n(H(this.rgba), 2); + }, r3.prototype.isDark = function() { + return H(this.rgba) < 0.5; + }, r3.prototype.isLight = function() { + return H(this.rgba) >= 0.5; + }, r3.prototype.toHex = function() { + return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2; + var r4, t2, e2, u2, a2, i2; + }, r3.prototype.toRgb = function() { + return o(this.rgba); + }, r3.prototype.toRgbString = function() { + return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsl = function() { + return d(c(this.rgba)); + }, r3.prototype.toHslString = function() { + return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsv = function() { + return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; + var r4; + }, r3.prototype.invert = function() { + return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); + var r4; + }, r3.prototype.saturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); + }, r3.prototype.desaturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); + }, r3.prototype.grayscale = function() { + return w(M(this.rgba, -1)); + }, r3.prototype.lighten = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); + }, r3.prototype.darken = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); + }, r3.prototype.rotate = function(r4) { + return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); + }, r3.prototype.alpha = function(r4) { + return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3); + var t2; + }, r3.prototype.hue = function(r4) { + var t2 = c(this.rgba); + return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r3.prototype.isEqual = function(r4) { + return this.toHex() === w(r4).toHex(); + }, r3; +})(); +var w = function(r3) { + return r3 instanceof j ? r3 : new j(r3); +}; + +// packages/dataviews/build-module/components/dataform-controls/color.mjs +var import_components44 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3, Picker } = unlock(import_components44.privateApis); +var ColorPicker = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + import_components44.Dropdown, + { + renderToggle: ({ onToggle, isOpen }) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + "button", + { + type: "button", + onClick: onToggle, + style: { + width: "24px", + height: "24px", + borderRadius: "50%", + backgroundColor: validColor, + border: "1px solid #ddd", + cursor: "pointer", + outline: isOpen ? "2px solid #007cba" : "none", + outlineOffset: "2px", + display: "flex", + alignItems: "center", + justifyContent: "center", + padding: 0, + margin: 0 + }, + "aria-label": "Open color picker" + } + ) }), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { style: { padding: "16px" }, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + Picker, + { + color: w(validColor), + onChange: onColorChange, + enableAlpha: true + } + ) }) + } + ); +}; +function Color({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }) || ""; + const handleColorChange = (0, import_element52.useCallback)( + (colorObject) => { + onChange(setValue({ item: data, value: colorObject.toHex() })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element52.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ValidatedInputControl3, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value, + help: description, + onChange: handleInputChange, + hideLabelFromVision, + type: "text", + prefix: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ColorPicker, + { + color: value, + onColorChange: handleColorChange + } + ) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +function Password({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const [isVisible2, setIsVisible] = (0, import_element53.useState)(false); + const toggleVisibility = (0, import_element53.useCallback)(() => { + setIsVisible((prev) => !prev); + }, []); + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n36.__)("Hide password") : (0, import_i18n36.__)("Show password") + } + ) }) + } + } + ); +} + +// packages/dataviews/build-module/field-types/utils/has-elements.mjs +function hasElements(field) { + return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; +} + +// packages/dataviews/build-module/components/dataform-controls/index.mjs +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + array: ArrayControl, + checkbox: Checkbox, + color: Color, + combobox: Combobox3, + datetime: DateTime, + date: DateControl, + email: Email, + telephone: Telephone, + url: Url, + integer: Integer, + number: Number2, + password: Password, + radio: Radio, + select: Select, + text: Text2, + toggle: Toggle, + textarea: Textarea, + toggleGroup: ToggleGroup +}; +function isEditConfig(value) { + return value && typeof value === "object" && typeof value.control === "string"; +} +function createConfiguredControl(config) { + const { control, ...controlConfig } = config; + const BaseControlType = getControlByType(control); + if (BaseControlType === null) { + return null; + } + return function ConfiguredControl(props) { + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(BaseControlType, { ...props, config: controlConfig }); + }; +} +function getControl(field, fallback) { + if (typeof field.Edit === "function") { + return field.Edit; + } + if (typeof field.Edit === "string") { + return getControlByType(field.Edit); + } + if (isEditConfig(field.Edit)) { + return createConfiguredControl(field.Edit); + } + if (hasElements(field) && field.type !== "array") { + return getControlByType("select"); + } + if (fallback === null) { + return null; + } + return getControlByType(fallback); +} +function getControlByType(type) { + if (Object.keys(FORM_CONTROLS).includes(type)) { + return FORM_CONTROLS[type]; + } + return null; +} + +// packages/dataviews/build-module/field-types/utils/get-filter-by.mjs +function getFilterBy(field, defaultOperators, validOperators) { + if (field.filterBy === false) { + return false; + } + const operators = field.filterBy?.operators?.filter( + (op) => validOperators.includes(op) + ) ?? defaultOperators; + if (operators.length === 0) { + return false; + } + return { + isPrimary: !!field.filterBy?.isPrimary, + operators + }; +} +var get_filter_by_default = getFilterBy; + +// packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs +var getValueFromId = (id) => ({ item }) => { + const path = id.split("."); + let value = item; + for (const segment of path) { + if (value.hasOwnProperty(segment)) { + value = value[segment]; + } else { + value = void 0; + } + } + return value; +}; +var get_value_from_id_default = getValueFromId; + +// packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs +var setValueFromId = (id) => ({ value }) => { + const path = id.split("."); + const result = {}; + let current = result; + for (const segment of path.slice(0, -1)) { + current[segment] = {}; + current = current[segment]; + } + current[path.at(-1)] = value; + return result; +}; +var set_value_from_id_default = setValueFromId; + +// packages/dataviews/build-module/field-types/email.mjs +var import_i18n37 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/render-from-elements.mjs +function RenderFromElements({ + item, + field +}) { + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = field.getValue({ item }); + if (isLoading) { + return value; + } + if (elements.length === 0) { + return value; + } + return elements?.find((element) => element.value === value)?.label || field.getValue({ item }); +} + +// packages/dataviews/build-module/field-types/utils/render-default.mjs +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RenderFromElements, { item, field }); + } + return field.getValueFormatted({ item, field }); +} + +// packages/dataviews/build-module/field-types/utils/sort-text.mjs +var sort_text_default = (a2, b2, direction) => { + return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-required.mjs +function isValidRequired(item, field) { + const value = field.getValue({ item }); + return ![void 0, "", null].includes(value); +} + +// packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs +function isValidMinLength(item, field) { + if (typeof field.isValid.minLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length >= field.isValid.minLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs +function isValidMaxLength(item, field) { + if (typeof field.isValid.maxLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length <= field.isValid.maxLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs +function isValidPattern(item, field) { + if (field.isValid.pattern?.constraint === void 0) { + return true; + } + try { + const regexp = new RegExp(field.isValid.pattern.constraint); + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return regexp.test(String(value)); + } catch { + return false; + } +} + +// packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs +function isValidElements(item, field) { + const elements = field.elements ?? []; + const validValues = elements.map((el) => el.value); + if (validValues.length === 0) { + return true; + } + const value = field.getValue({ item }); + return [].concat(value).every((v2) => validValues.includes(v2)); +} + +// packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs +function getValueFormatted({ + item, + field +}) { + return field.getValue({ item }); +} +var get_value_formatted_default_default = getValueFormatted; + +// packages/dataviews/build-module/field-types/email.mjs +var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +function isValidCustom(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { + return (0, import_i18n37.__)("Value must be a valid email address."); + } + return null; +} +var email_default = { + type: "email", + render, + Edit: "email", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements, + custom: isValidCustom + } +}; + +// packages/dataviews/build-module/field-types/integer.mjs +var import_i18n38 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/sort-number.mjs +var sort_number_default = (a2, b2, direction) => { + return direction === "asc" ? a2 - b2 : b2 - a2; +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-min.mjs +function isValidMin(item, field) { + if (typeof field.isValid.min?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) >= field.isValid.min.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max.mjs +function isValidMax(item, field) { + if (typeof field.isValid.max?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) <= field.isValid.max.constraint; +} + +// packages/dataviews/build-module/field-types/integer.mjs +var format2 = { + separatorThousand: "," +}; +function getValueFormatted2({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatInteger; + if (field.type !== "integer") { + formatInteger = format2; + } else { + formatInteger = field.format; + } + const { separatorThousand } = formatInteger; + const integerValue = Math.trunc(value); + if (!separatorThousand) { + return String(integerValue); + } + return String(integerValue).replace( + /\B(?=(\d{3})+(?!\d))/g, + separatorThousand + ); +} +function isValidCustom2(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { + return (0, import_i18n38.__)("Value must be an integer."); + } + return null; +} +var integer_default = { + type: "integer", + render, + Edit: "integer", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format2, + getValueFormatted: getValueFormatted2, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom2 + } +}; + +// packages/dataviews/build-module/field-types/number.mjs +var import_i18n39 = __toESM(require_i18n(), 1); +var format3 = { + separatorThousand: ",", + separatorDecimal: ".", + decimals: 2 +}; +function getValueFormatted3({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatNumber; + if (field.type !== "number") { + formatNumber = format3; + } else { + formatNumber = field.format; + } + const { separatorThousand, separatorDecimal, decimals } = formatNumber; + const fixedValue = value.toFixed(decimals); + const [integerPart, decimalPart] = fixedValue.split("."); + const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; + return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; +} +function isEmpty2(value) { + return value === "" || value === void 0 || value === null; +} +function isValidCustom3(item, field) { + const value = field.getValue({ item }); + if (!isEmpty2(value) && !Number.isFinite(value)) { + return (0, import_i18n39.__)("Value must be a number."); + } + return null; +} +var number_default = { + type: "number", + render, + Edit: "number", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format3, + getValueFormatted: getValueFormatted3, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom3 + } +}; + +// packages/dataviews/build-module/field-types/text.mjs +var text_default = { + type: "text", + render, + Edit: "text", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + // Single selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/datetime.mjs +var import_date6 = __toESM(require_date(), 1); +var format4 = { + datetime: (0, import_date6.getSettings)().formats.datetime, + weekStartsOn: (0, import_date6.getSettings)().l10n.startOfWeek +}; +function getValueFormatted4({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDatetime; + if (field.type !== "datetime") { + formatDatetime = format4; + } else { + formatDatetime = field.format; + } + return (0, import_date6.dateI18n)(formatDatetime.datetime, (0, import_date6.getDate)(value)); +} +var sort = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var datetime_default = { + type: "datetime", + render, + Edit: "datetime", + sort, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + format: format4, + getValueFormatted: getValueFormatted4, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/date.mjs +var import_date7 = __toESM(require_date(), 1); +var format5 = { + date: (0, import_date7.getSettings)().formats.date, + weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek +}; +function getValueFormatted5({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDate2; + if (field.type !== "date") { + formatDate2 = format5; + } else { + formatDate2 = field.format; + } + return (0, import_date7.dateI18n)(formatDate2.date, (0, import_date7.getDate)(value)); +} +var sort2 = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var date_default = { + type: "date", + render, + Edit: "date", + sort: sort2, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + format: format5, + getValueFormatted: getValueFormatted5, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/boolean.mjs +var import_i18n40 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs +function isValidRequiredForBool(item, field) { + const value = field.getValue({ item }); + return value === true; +} + +// packages/dataviews/build-module/field-types/boolean.mjs +function getValueFormatted6({ + item, + field +}) { + const value = field.getValue({ item }); + if (value === true) { + return (0, import_i18n40.__)("True"); + } + if (value === false) { + return (0, import_i18n40.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n40.__)("Value must be true, false, or undefined"); + } + return null; +} +var sort3 = (a2, b2, direction) => { + const boolA = Boolean(a2); + const boolB = Boolean(b2); + if (boolA === boolB) { + return 0; + } + if (direction === "asc") { + return boolA ? 1 : -1; + } + return boolA ? -1 : 1; +}; +var boolean_default = { + type: "boolean", + render, + Edit: "checkbox", + sort: sort3, + validate: { + required: isValidRequiredForBool, + elements: isValidElements, + custom: isValidCustom4 + }, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + format: {}, + getValueFormatted: getValueFormatted6 +}; + +// packages/dataviews/build-module/field-types/media.mjs +var media_default = { + type: "media", + render: () => null, + Edit: null, + sort: () => 0, + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: get_value_formatted_default_default, + // cannot validate any constraint, so + // the only available validation for the field author + // would be providing a custom validator. + validate: {} +}; + +// packages/dataviews/build-module/field-types/array.mjs +var import_i18n41 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs +function isValidRequiredForArray(item, field) { + const value = field.getValue({ item }); + return Array.isArray(value) && value.length > 0 && value.every( + (element) => ![void 0, "", null].includes(element) + ); +} + +// packages/dataviews/build-module/field-types/array.mjs +function getValueFormatted7({ + item, + field +}) { + const value = field.getValue({ item }); + const arr = Array.isArray(value) ? value : []; + return arr.join(", "); +} +function render2({ item, field }) { + return getValueFormatted7({ item, field }); +} +function isValidCustom5(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Array.isArray(value)) { + return (0, import_i18n41.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n41.__)("Every value must be a string."); + } + return null; +} +var sort4 = (a2, b2, direction) => { + const arrA = Array.isArray(a2) ? a2 : []; + const arrB = Array.isArray(b2) ? b2 : []; + if (arrA.length !== arrB.length) { + return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; + } + const joinedA = arrA.join(","); + const joinedB = arrB.join(","); + return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); +}; +var array_default = { + type: "array", + render: render2, + Edit: "array", + sort: sort4, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: getValueFormatted7, + validate: { + required: isValidRequiredForArray, + elements: isValidElements, + custom: isValidCustom5 + } +}; + +// packages/dataviews/build-module/field-types/password.mjs +function getValueFormatted8({ + item, + field +}) { + return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; +} +var password_default = { + type: "password", + render, + Edit: "password", + sort: () => 0, + // Passwords should not be sortable for security reasons + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: getValueFormatted8, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/telephone.mjs +var telephone_default = { + type: "telephone", + render, + Edit: "telephone", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/color.mjs +var import_i18n42 = __toESM(require_i18n(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(RenderFromElements, { item, field }); + } + const value = get_value_formatted_default_default({ item, field }); + if (!value || !w(value).isValid()) { + return value; + } + return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: value }) + ] }); +} +function isValidCustom6(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !w(value).isValid()) { + return (0, import_i18n42.__)("Value must be a valid color."); + } + return null; +} +var sort5 = (a2, b2, direction) => { + const colorA = w(a2); + const colorB = w(b2); + if (!colorA.isValid() && !colorB.isValid()) { + return 0; + } + if (!colorA.isValid()) { + return direction === "asc" ? 1 : -1; + } + if (!colorB.isValid()) { + return direction === "asc" ? -1 : 1; + } + const hslA = colorA.toHsl(); + const hslB = colorB.toHsl(); + if (hslA.h !== hslB.h) { + return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; + } + if (hslA.s !== hslB.s) { + return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; + } + return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; +}; +var color_default = { + type: "color", + render: render3, + Edit: "color", + sort: sort5, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_IS_ANY, + OPERATOR_IS_NONE + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements, + custom: isValidCustom6 + } +}; + +// packages/dataviews/build-module/field-types/url.mjs +var url_default = { + type: "url", + render, + Edit: "url", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/no-type.mjs +var sort6 = (a2, b2, direction) => { + if (typeof a2 === "number" && typeof b2 === "number") { + return sort_number_default(a2, b2, direction); + } + return sort_text_default(a2, b2, direction); +}; +var no_type_default = { + // type: no type for this one + render, + Edit: null, + sort: sort6, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: getAllOperatorNames(), + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/utils/get-is-valid.mjs +function getIsValid(field, fieldType) { + let required; + if (field.isValid?.required === true && fieldType.validate.required !== void 0) { + required = { + constraint: true, + validate: fieldType.validate.required + }; + } + let elements; + if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out + field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { + elements = { + constraint: true, + validate: fieldType.validate.elements + }; + } + let min; + if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { + min = { + constraint: field.isValid.min, + validate: fieldType.validate.min + }; + } + let max; + if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { + max = { + constraint: field.isValid.max, + validate: fieldType.validate.max + }; + } + let minLength; + if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { + minLength = { + constraint: field.isValid.minLength, + validate: fieldType.validate.minLength + }; + } + let maxLength; + if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { + maxLength = { + constraint: field.isValid.maxLength, + validate: fieldType.validate.maxLength + }; + } + let pattern; + if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { + pattern = { + constraint: field.isValid?.pattern, + validate: fieldType.validate.pattern + }; + } + const custom = field.isValid?.custom ?? fieldType.validate.custom; + return { + required, + elements, + min, + max, + minLength, + maxLength, + pattern, + custom + }; +} + +// packages/dataviews/build-module/field-types/utils/get-filter.mjs +function getFilter(fieldType) { + return fieldType.validOperators.reduce((accumulator, operator) => { + const operatorObj = getOperatorByName(operator); + if (operatorObj?.filter) { + accumulator[operator] = operatorObj.filter; + } + return accumulator; + }, {}); +} + +// packages/dataviews/build-module/field-types/utils/get-format.mjs +function getFormat(field, fieldType) { + return { + ...fieldType.format, + ...field.format + }; +} +var get_format_default = getFormat; + +// packages/dataviews/build-module/field-types/index.mjs +function getFieldTypeByName(type) { + const found = [ + email_default, + integer_default, + number_default, + text_default, + datetime_default, + date_default, + boolean_default, + media_default, + array_default, + password_default, + telephone_default, + color_default, + url_default + ].find((fieldType) => fieldType?.type === type); + if (!!found) { + return found; + } + return no_type_default; +} +function normalizeFields(fields) { + return fields.map((field) => { + const fieldType = getFieldTypeByName(field.type); + const getValue = field.getValue || get_value_from_id_default(field.id); + const sort7 = function(a2, b2, direction) { + const aValue = getValue({ item: a2 }); + const bValue = getValue({ item: b2 }); + return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); + }; + return { + id: field.id, + label: field.label || field.id, + header: field.header || field.label || field.id, + description: field.description, + placeholder: field.placeholder, + getValue, + setValue: field.setValue || set_value_from_id_default(field.id), + elements: field.elements, + getElements: field.getElements, + hasElements: hasElements(field), + isVisible: field.isVisible, + enableHiding: field.enableHiding ?? true, + readOnly: field.readOnly ?? false, + // The type provides defaults for the following props + type: fieldType.type, + render: field.render ?? fieldType.render, + Edit: getControl(field, fieldType.Edit), + sort: sort7, + enableSorting: field.enableSorting ?? fieldType.enableSorting, + enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, + isValid: getIsValid(field, fieldType), + filterBy: get_filter_by_default( + field, + fieldType.defaultOperators, + fieldType.validOperators + ), + filter: getFilter(fieldType), + format: get_format_default(field, fieldType), + getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted + }; + }); +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +var defaultGetItemId = (item) => item.id; +var defaultIsItemClickable = () => true; +var EMPTY_ARRAY6 = []; +var dataViewsLayouts = VIEW_LAYOUTS.filter( + (viewLayout) => !viewLayout.isPicker +); +function DefaultUI({ + header, + search = true, + searchLabel = void 0 +}) { + return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(DataViewsFooter, {}) + ] }); +} +function DataViews({ + view, + onChangeView, + fields, + search = true, + searchLabel = void 0, + actions = EMPTY_ARRAY6, + data, + getItemId = defaultGetItemId, + getItemLevel, + isLoading = false, + paginationInfo, + defaultLayouts: defaultLayoutsProperty, + selection: selectionProperty, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable = defaultIsItemClickable, + header, + children, + config = { perPageSizes: [10, 20, 50, 100] }, + empty +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element54.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element54.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element54.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element54.useState)(null); + function setSelectionWithChange(value) { + const newValue = typeof value === "function" ? value(selection) : value; + if (isUncontrolled) { + setSelectionState(newValue); + } + if (onChangeSelection) { + onChangeSelection(newValue); + } + } + const _fields = (0, import_element54.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element54.useMemo)(() => { + return selection.filter( + (id) => data.some((item) => getItemId(item) === id) + ); + }, [selection, data, getItemId]); + const filters = use_filters_default(_fields, view); + const hasPrimaryOrLockedFilters = (0, import_element54.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element54.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element54.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element54.useEffect)(() => { + if (!view.infiniteScrollEnabled || !containerRef.current) { + return; + } + const handleScroll = (0, import_compose12.throttle)((event) => { + const target = event.target; + const scrollTop = target.scrollTop; + const scrollHeight = target.scrollHeight; + const clientHeight = target.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 100) { + infiniteScrollHandler?.(); + } + }, 100); + const container = containerRef.current; + container.addEventListener("scroll", handleScroll); + return () => { + container.removeEventListener("scroll", handleScroll); + handleScroll.cancel(); + }; + }, [infiniteScrollHandler, view.infiniteScrollEnabled]); + const defaultLayouts = (0, import_element54.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data, + isLoading, + paginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInfiniteScrollHandler: !!infiniteScrollHandler + }, + children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + DefaultUI, + { + header, + search, + searchLabel + } + ) }) + } + ); +} +var DataViewsSubComponents = DataViews; +DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; +DataViewsSubComponents.Filters = filters_default; +DataViewsSubComponents.FiltersToggled = filters_toggled_default; +DataViewsSubComponents.FiltersToggle = toggle_default; +DataViewsSubComponents.Layout = DataViewsLayout; +DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; +DataViewsSubComponents.Pagination = DataViewsPagination; +DataViewsSubComponents.Search = dataviews_search_default; +DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; +DataViewsSubComponents.Footer = DataViewsFooter; +var dataviews_default = DataViewsSubComponents; + +// packages/dataviews/build-module/utils/filter-sort-and-paginate.mjs +var import_remove_accents2 = __toESM(require_remove_accents(), 1); +var import_deprecated = __toESM(require_deprecated(), 1); +function normalizeSearchInput2(input = "") { + return (0, import_remove_accents2.default)(input.trim().toLowerCase()); +} +var EMPTY_ARRAY7 = []; +function filterSortAndPaginate(data, view, fields) { + if (!data) { + return { + data: EMPTY_ARRAY7, + paginationInfo: { totalItems: 0, totalPages: 0 } + }; + } + const _fields = normalizeFields(fields); + let filteredData = [...data]; + if (view.search) { + const normalizedSearch = normalizeSearchInput2(view.search); + filteredData = filteredData.filter((item) => { + return _fields.filter((field) => field.enableGlobalSearch).some((field) => { + const fieldValue = field.getValue({ item }); + const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue]; + return values.some( + (value) => normalizeSearchInput2(String(value)).includes( + normalizedSearch + ) + ); + }); + }); + } + if (view.filters && view.filters?.length > 0) { + view.filters.forEach((filter) => { + const field = _fields.find( + (_field) => _field.id === filter.field + ); + if (field) { + if (filter.operator === OPERATOR_IS_NOT_ALL) { + (0, import_deprecated.default)("The 'isNotAll' filter operator", { + since: "7.0", + alternative: "'isNone'" + }); + } + const handler = field.filter[filter.operator]; + if (handler) { + filteredData = filteredData.filter( + (item) => handler(item, field, filter.value) + ); + } + } + }); + } + const sortByField = view.sort?.field ? _fields.find((field) => { + return field.enableSorting !== false && field.id === view.sort?.field; + }) : null; + const groupByField = view.groupBy?.field ? _fields.find((field) => { + return field.enableSorting !== false && field.id === view.groupBy?.field; + }) : null; + if (sortByField || groupByField) { + filteredData.sort((a2, b2) => { + if (groupByField) { + const groupCompare = groupByField.sort( + a2, + b2, + view.groupBy?.direction ?? "asc" + ); + if (groupCompare !== 0) { + return groupCompare; + } + } + if (sortByField) { + return sortByField.sort(a2, b2, view.sort?.direction ?? "desc"); + } + return 0; + }); + } + let totalItems = filteredData.length; + let totalPages = 1; + if (view.page !== void 0 && view.perPage !== void 0) { + const start = (view.page - 1) * view.perPage; + totalItems = filteredData?.length || 0; + totalPages = Math.ceil(totalItems / view.perPage); + filteredData = filteredData?.slice(start, start + view.perPage); + } + return { + data: filteredData, + paginationInfo: { + totalItems, + totalPages + } + }; +} + +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element55 = __toESM(require_element(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element55.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime93.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/header.mjs +var import_components47 = __toESM(require_components(), 1); + +// packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs +var import_components46 = __toESM(require_components(), 1); +var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components46.createSlotFill)("SidebarToggle"); + +// packages/admin-ui/build-module/page/header.mjs +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + showSidebarToggle = true +}) { + const classes = clsx_default("admin-ui-page", className); + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/pattern-list/stage.tsx +var import_core_data3 = __toESM(require_core_data()); +var import_components48 = __toESM(require_components()); +var import_data10 = __toESM(require_data()); +var import_element58 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_patterns3 = __toESM(require_patterns()); +var import_i18n47 = __toESM(require_i18n()); + +// routes/lock-unlock.ts +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" +); + +// routes/pattern-list/view-utils.ts +var import_i18n43 = __toESM(require_i18n()); +var LAYOUT_GRID2 = "grid"; +var LAYOUT_TABLE2 = "table"; +var DEFAULT_VIEW = { + type: LAYOUT_GRID2, + perPage: 20, + sort: { + field: "title", + direction: "asc" + }, + filters: [], + fields: ["sync-status"], + layout: { + badgeFields: ["sync-status"] + }, + titleField: "title", + mediaField: "preview" +}; +var DEFAULT_VIEWS = [ + { + slug: "all", + label: (0, import_i18n43.__)("All patterns") + }, + { + slug: "my-patterns", + label: (0, import_i18n43.__)("My patterns") + }, + { + slug: "registered", + label: (0, import_i18n43.__)("Registered") + } +]; +var DEFAULT_LAYOUTS = { + [LAYOUT_TABLE2]: {}, + [LAYOUT_GRID2]: { + layout: { + badgeFields: ["sync-status"] + } + } +}; + +// routes/pattern-list/fields/preview.tsx +var import_i18n44 = __toESM(require_i18n()); +import { Preview } from "@wordpress/lazy-editor"; +function PreviewField({ item }) { + return /* @__PURE__ */ React.createElement( + Preview, + { + blocks: item.blocks, + content: item.content, + description: item.description + } + ); +} +var previewField = { + label: (0, import_i18n44.__)("Preview"), + id: "preview", + render: PreviewField, + enableSorting: false +}; + +// routes/pattern-list/fields/sync-status.tsx +var import_i18n45 = __toESM(require_i18n()); +var import_patterns = __toESM(require_patterns()); +var { PATTERN_SYNC_TYPES } = unlock2(import_patterns.privateApis); +var OPERATOR_IS2 = "is"; +var SYNC_FILTERS = [ + { + value: PATTERN_SYNC_TYPES.full, + label: (0, import_i18n45._x)("Synced", "pattern (singular)"), + description: (0, import_i18n45.__)("Patterns that are kept in sync across the site.") + }, + { + value: PATTERN_SYNC_TYPES.unsynced, + label: (0, import_i18n45._x)("Not synced", "pattern (singular)"), + description: (0, import_i18n45.__)( + "Patterns that can be changed freely without affecting the site." + ) + } +]; +var patternStatusField = { + label: (0, import_i18n45.__)("Sync status"), + id: "sync-status", + render: ({ item }) => { + const syncStatus = item.syncStatus; + return /* @__PURE__ */ React.createElement( + "span", + { + className: `routes-pattern-list__field-sync-status-${syncStatus}` + }, + SYNC_FILTERS.find(({ value }) => value === syncStatus)?.label + ); + }, + elements: SYNC_FILTERS, + filterBy: { + operators: [OPERATOR_IS2], + isPrimary: true + }, + enableSorting: false +}; + +// routes/pattern-list/fields/category.tsx +var import_i18n46 = __toESM(require_i18n()); +var import_data8 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_element56 = __toESM(require_element()); +var OPERATOR_IS3 = "is"; +function CategoryField({ item }) { + const blockPatternCategories = (0, import_data8.useSelect)( + (select2) => select2(import_core_data.store).getBlockPatternCategories(), + [] + ); + const categoryLabels = (0, import_element56.useMemo)(() => { + if (!item.categories || !Array.isArray(item.categories)) { + return []; + } + return item.categories.map((catSlug) => { + const category = blockPatternCategories?.find( + (cat) => cat.name === catSlug + ); + return category ? category.label || category.name : null; + }).filter(Boolean); + }, [item.categories, blockPatternCategories]); + if (categoryLabels.length === 0) { + return /* @__PURE__ */ React.createElement("span", { className: "pattern-category-field__empty" }, "\u2014"); + } + return /* @__PURE__ */ React.createElement("span", { className: "pattern-category-field" }, categoryLabels.join(", ")); +} +function usePatternCategories() { + const userPatternCategories = (0, import_data8.useSelect)( + (select2) => select2(import_core_data.store).getUserPatternCategories(), + [] + ); + const blockPatternCategories = (0, import_data8.useSelect)( + (select2) => select2(import_core_data.store).getBlockPatternCategories(), + [] + ); + return (0, import_element56.useMemo)(() => { + const categoryMap = /* @__PURE__ */ new Map(); + userPatternCategories?.forEach((cat) => { + if (!categoryMap.has(cat.name)) { + categoryMap.set(cat.name, { + value: cat.name, + label: cat.label || cat.name + }); + } + }); + blockPatternCategories?.forEach((cat) => { + if (!categoryMap.has(cat.name)) { + categoryMap.set(cat.name, { + value: cat.name, + label: cat.label || cat.name + }); + } + }); + return Array.from(categoryMap.values()).sort( + (a2, b2) => a2.label.localeCompare(b2.label) + ); + }, [userPatternCategories, blockPatternCategories]); +} +function usePatternCategoryField() { + const categories = usePatternCategories(); + return { + label: (0, import_i18n46.__)("Category"), + id: "category", + render: CategoryField, + elements: categories, + getValue: ({ item }) => { + return item.categories; + }, + filterBy: { + operators: [OPERATOR_IS3], + isPrimary: true + }, + enableSorting: false + }; +} + +// routes/pattern-list/use-patterns.ts +var import_data9 = __toESM(require_data()); +var import_core_data2 = __toESM(require_core_data()); +var import_element57 = __toESM(require_element()); +var import_patterns2 = __toESM(require_patterns()); +var import_block_editor = __toESM(require_block_editor()); + +// routes/pattern-list/utils.ts +var filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex((item) => currentItem.name === item.name); + +// routes/pattern-list/use-patterns.ts +var { + PATTERN_TYPES, + PATTERN_SYNC_TYPES: PATTERN_SYNC_TYPES2, + EXCLUDED_PATTERN_SOURCES, + PATTERN_DEFAULT_CATEGORY +} = unlock2(import_patterns2.privateApis); +var { extractWords, getNormalizedSearchTerms, normalizeString: normalizeString2 } = unlock2( + import_block_editor.privateApis +); +function normalizeThemePattern(pattern) { + return { + id: pattern.name, + title: pattern.title, + content: pattern.content, + keywords: pattern.keywords || [], + type: PATTERN_TYPES.theme, + // Normalize categories to always be an array of slugs + categories: pattern.categories || [], + // Theme patterns are always unsynced + syncStatus: PATTERN_SYNC_TYPES2.unsynced, + description: pattern.description || "" + }; +} +function normalizeUserPattern(pattern, userPatternCategories) { + const categories = []; + if (pattern.wp_pattern_category && Array.isArray(pattern.wp_pattern_category)) { + pattern.wp_pattern_category.forEach((catId) => { + const category = userPatternCategories?.find( + (cat) => cat.id === catId + ); + if (category) { + categories.push(category.name); + } + }); + } + const numericId = pattern.id; + return { + id: pattern.name || pattern.id.toString(), + _recordId: numericId, + // Keep numeric ID for permissions lookup + keywords: [], + type: PATTERN_TYPES.user, + // Normalize categories to always be an array of slugs + categories, + // Normalize sync status + syncStatus: pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES2.full, + title: typeof pattern.title === "string" ? pattern.title : pattern.title.raw, + content: typeof pattern.content === "string" ? pattern.content : pattern.content.raw, + description: pattern.excerpt?.raw || "", + blocks: pattern.blocks + }; +} +var removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => { + return unmatchedTerms.filter( + (term) => !getNormalizedSearchTerms(unprocessedTerms).some( + (unprocessedTerm) => unprocessedTerm.includes(term) + ) + ); +}; +function getItemSearchRank(item, searchTerm, config) { + const { categoryId, hasCategory, onlyFilterByCategory } = config; + let rank = categoryId === PATTERN_DEFAULT_CATEGORY || categoryId === "my-patterns" && item.type === PATTERN_TYPES.user || hasCategory && hasCategory(item, categoryId || "") ? 1 : 0; + if (!rank || onlyFilterByCategory) { + return rank; + } + const normalizedSearchInput = normalizeString2(searchTerm); + const normalizedTitle = normalizeString2(item.title); + if (normalizedSearchInput === normalizedTitle) { + rank += 30; + } else if (normalizedTitle.startsWith(normalizedSearchInput)) { + rank += 20; + } else { + const terms = [ + item.id, + item.title, + item.description, + ...item.keywords + ].join(" "); + const normalizedSearchTerms = extractWords(normalizedSearchInput); + const unmatchedTerms = removeMatchingTerms( + normalizedSearchTerms, + terms + ); + if (unmatchedTerms.length === 0) { + rank += 10; + } + } + return rank; +} +function searchItems(items = [], searchInput = "", config = {}) { + const normalizedSearchTerms = getNormalizedSearchTerms(searchInput); + const onlyFilterByCategory = config.categoryId !== PATTERN_DEFAULT_CATEGORY && !normalizedSearchTerms.length; + const searchRankConfig = { ...config, onlyFilterByCategory }; + const threshold = onlyFilterByCategory ? 0 : 1; + const rankedItems = items.map((item) => { + return [ + item, + getItemSearchRank(item, searchInput, searchRankConfig) + ]; + }).filter(([, rank]) => rank > threshold); + if (normalizedSearchTerms.length === 0) { + return rankedItems.map(([item]) => item); + } + rankedItems.sort(([, rank1], [, rank2]) => rank2 - rank1); + return rankedItems.map(([item]) => item); +} +var selectThemePatterns = (0, import_data9.createSelector)( + (select2) => { + const { getBlockPatterns } = select2(import_core_data2.store); + const { isResolving: isResolvingSelector } = select2(import_core_data2.store); + const restBlockPatterns = getBlockPatterns(); + const patterns = (restBlockPatterns || []).filter( + (pattern) => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source) + ).filter(filterOutDuplicatesByName).filter((pattern) => pattern.inserter !== false).map(normalizeThemePattern); + return { + patterns, + isResolving: isResolvingSelector("getBlockPatterns") + }; + }, + (select2) => [ + select2(import_core_data2.store).getBlockPatterns(), + select2(import_core_data2.store).isResolving("getBlockPatterns") + ] +); +var selectUserPatterns = (0, import_data9.createSelector)( + (select2, syncStatus = void 0, search = "") => { + const { + getEntityRecords, + isResolving: isResolvingSelector, + getUserPatternCategories + } = select2(import_core_data2.store); + const query = { per_page: -1 }; + const patternPosts = getEntityRecords( + "postType", + PATTERN_TYPES.user, + query + ); + const userPatternCategories = getUserPatternCategories(); + let patterns = (patternPosts ?? []).map( + (pattern) => normalizeUserPattern(pattern, userPatternCategories) + ); + const isResolving = isResolvingSelector("getEntityRecords", [ + "postType", + PATTERN_TYPES.user, + query + ]); + if (syncStatus) { + patterns = patterns.filter( + (pattern) => pattern.syncStatus === syncStatus + ); + } + patterns = searchItems(patterns, search, { + // We exit user pattern retrieval early if we aren't in the + // catch-all category for user created patterns, so it has + // to be in the category. + categoryId: PATTERN_DEFAULT_CATEGORY, + hasCategory: () => true + }); + return { + patterns, + isResolving, + categories: userPatternCategories + }; + }, + (select2) => [ + select2(import_core_data2.store).getEntityRecords("postType", PATTERN_TYPES.user, { + per_page: -1 + }), + select2(import_core_data2.store).isResolving("getEntityRecords", [ + "postType", + PATTERN_TYPES.user, + { per_page: -1 } + ]), + select2(import_core_data2.store).getUserPatternCategories() + ] +); +var selectPatterns = (0, import_data9.createSelector)( + (select2, categoryId, syncStatus, search = "") => { + const { + patterns: themePatterns, + isResolving: isResolvingThemePatterns + } = selectThemePatterns(select2); + const { patterns: userPatterns, isResolving: isResolvingUserPatterns } = selectUserPatterns(select2); + let patterns = [ + ...themePatterns || [], + ...userPatterns || [] + ]; + if (syncStatus) { + patterns = patterns.filter( + (pattern) => pattern.syncStatus === syncStatus + ); + } + if (categoryId && categoryId !== PATTERN_DEFAULT_CATEGORY) { + patterns = searchItems(patterns, search, { + categoryId, + hasCategory: (item, currentCategory) => { + return item.categories?.includes(currentCategory); + } + }); + } else { + patterns = searchItems(patterns, search, { + categoryId: PATTERN_DEFAULT_CATEGORY, + hasCategory: () => true + }); + } + return { + patterns, + isResolving: isResolvingThemePatterns || isResolvingUserPatterns + }; + }, + (select2) => [ + selectThemePatterns(select2), + selectUserPatterns(select2) + ] +); +function useAugmentPatternsWithPermissions(patterns) { + const idsAndTypes = (0, import_element57.useMemo)( + () => patterns?.filter((record) => record.type !== PATTERN_TYPES.theme).map((record) => [ + record.type, + record._recordId, + record.id + ]) ?? [], + [patterns] + ); + const permissions = (0, import_data9.useSelect)( + (select2) => { + const { getEntityRecordPermissions } = unlock2( + select2(import_core_data2.store) + ); + return idsAndTypes.reduce( + (acc, [type, numericId, stringId]) => { + acc[stringId] = getEntityRecordPermissions( + "postType", + type, + numericId + ); + return acc; + }, + {} + ); + }, + [idsAndTypes] + ); + return (0, import_element57.useMemo)( + () => patterns?.map((record) => ({ + ...record, + permissions: permissions?.[record.id] ?? {} + })) ?? [], + [patterns, permissions] + ); +} +var usePatterns = (postType, categoryId, { search = "", syncStatus } = {}) => { + return (0, import_data9.useSelect)( + (select2) => { + if (postType === PATTERN_TYPES.user) { + const result = selectUserPatterns(select2, syncStatus, search); + let { patterns } = result; + if (categoryId && categoryId !== PATTERN_DEFAULT_CATEGORY) { + patterns = patterns.filter( + (pattern) => pattern.categories.includes(categoryId) + ); + } + return { + patterns, + isResolving: result.isResolving + }; + } else if (postType === PATTERN_TYPES.theme) { + const result = selectThemePatterns(select2); + let { patterns } = result; + if (categoryId && categoryId !== PATTERN_DEFAULT_CATEGORY) { + patterns = patterns.filter( + (pattern) => pattern.categories.includes(categoryId) + ); + } + patterns = searchItems(patterns, search, { + categoryId: categoryId || PATTERN_DEFAULT_CATEGORY, + hasCategory: () => true + }); + return { + patterns, + isResolving: result.isResolving + }; + } + return selectPatterns(select2, categoryId, syncStatus, search); + }, + [categoryId, postType, search, syncStatus] + ); +}; +var use_patterns_default = usePatterns; + +// routes/pattern-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='2d52a92b3c']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "2d52a92b3c"); + style.appendChild(document.createTextNode(":root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.patterns-menu-items__convert-modal{z-index:1000001}.patterns-menu-items__convert-modal [role=dialog]>[role=document]{width:350px}.patterns-menu-items__convert-modal .patterns-menu-items__convert-modal-categories{position:relative}.patterns-menu-items__convert-modal .components-form-token-field__suggestions-list:not(:empty){background-color:#fff;border:1px solid var(--wp-admin-theme-color);border-bottom-left-radius:2px;border-bottom-right-radius:2px;box-shadow:0 0 .5px .5px var(--wp-admin-theme-color);box-sizing:border-box;left:-1px;max-height:96px;min-width:auto;position:absolute;width:calc(100% + 2px);z-index:1}.patterns-create-modal__name-input input[type=text]{margin:0}.patterns-rename-pattern-category-modal__validation-message{color:#cc1818}@media (min-width:782px){.patterns-rename-pattern-category-modal__validation-message{width:320px}}.pattern-overrides-control__allow-overrides-button{justify-content:center;width:100%}.routes-pattern-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}.dataviews-view-grid__badge-fields .dataviews-view-grid__field-value:has(.routes-pattern-list__field-sync-status-fully){background:rgba(var(--wp-block-synced-color--rgb),.04);color:var(--wp-block-synced-color)}")); + document.head.appendChild(style); +} + +// routes/pattern-list/stage.tsx +var { usePostActions, patternTitleField } = unlock2(import_editor.privateApis); +var { Tabs } = unlock2(import_components48.privateApis); +var { PATTERN_TYPES: PATTERN_TYPES2, CreatePatternModal } = unlock2(import_patterns3.privateApis); +function PatternList() { + const invalidate = useInvalidate(); + const { type = "all" } = useParams({ + from: "/patterns/list/$type" + }); + const navigate = useNavigate(); + const searchParams = useSearch({ from: "/patterns/list/$type" }); + const postTypeObject = (0, import_data10.useSelect)( + (select2) => select2(import_core_data3.store).getPostType("wp_block"), + [] + ); + const labels = postTypeObject?.labels; + const canCreateRecord = (0, import_data10.useSelect)( + (select2) => select2(import_core_data3.store).canUser("create", { + kind: "postType", + name: "wp_block" + }), + [] + ); + const [showPatternModal, setShowPatternModal] = (0, import_element58.useState)(false); + const handleQueryParamsChange = (0, import_element58.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, isModified, updateView, resetToDefault } = useView({ + kind: "postType", + name: "wp_block", + slug: "default-new", + defaultView: DEFAULT_VIEW, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const onReset = () => { + resetToDefault(); + invalidate(); + }; + const onChangeView = (newView) => { + updateView(newView); + if (newView.type !== view.type) { + invalidate(); + } + }; + const categoryFilter = (0, import_element58.useMemo)(() => { + const filter = view.filters?.find((f2) => f2.field === "category"); + return filter?.value || "all-patterns"; + }, [view.filters]); + const syncStatusFilter = (0, import_element58.useMemo)(() => { + const filter = view.filters?.find((f2) => f2.field === "sync-status"); + return filter?.value; + }, [view.filters]); + const patternType = (0, import_element58.useMemo)(() => { + if (type === "my-patterns") { + return PATTERN_TYPES2.user; + } else if (type === "registered") { + return PATTERN_TYPES2.theme; + } + return null; + }, [type]); + const { patterns, isResolving } = use_patterns_default( + patternType, + categoryFilter, + { + search: view.search, + syncStatus: syncStatusFilter + } + ); + const patternsWithPermissions = useAugmentPatternsWithPermissions(patterns); + const patternCategoryField = usePatternCategoryField(); + const fields = (0, import_element58.useMemo)(() => { + const patternFields = [ + previewField, + patternTitleField, + patternCategoryField + ]; + if (type === "my-patterns" || type === "all") { + patternFields.push(patternStatusField); + } + return patternFields; + }, [type, patternCategoryField]); + const { data: posts, paginationInfo } = (0, import_element58.useMemo)(() => { + const viewWithoutFilters = { ...view }; + delete viewWithoutFilters.search; + viewWithoutFilters.filters = []; + return filterSortAndPaginate( + patternsWithPermissions, + viewWithoutFilters, + fields + ); + }, [patternsWithPermissions, view, fields]); + const { totalItems, totalPages } = paginationInfo; + const cleanupDeletedPostIdsFromUrl = (0, import_element58.useCallback)( + (deletedItems) => { + const deletedIds = deletedItems.map((item) => item.id); + const currentPostIds = searchParams.postIds || []; + const remainingPostIds = currentPostIds.filter( + (id) => !deletedIds.includes(id) + ); + if (remainingPostIds.length !== currentPostIds.length) { + navigate({ + search: { + ...searchParams, + postIds: remainingPostIds.length > 0 ? remainingPostIds : void 0 + } + }); + } else { + invalidate(); + } + }, + [invalidate, searchParams, navigate] + ); + const postTypeActions = usePostActions({ + postType: "wp_block", + context: "list", + onActionPerformed: (actionId, items) => { + if (actionId === "move-to-trash" || actionId === "permanently-delete") { + cleanupDeletedPostIdsFromUrl(items); + } + } + }); + const actions = (0, import_element58.useMemo)(() => { + return [ + ...postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }) + ]; + }, [postTypeActions]); + const handleTabChange = (0, import_element58.useCallback)( + (typeSlug) => { + navigate({ + to: `/patterns/list/${typeSlug}` + }); + }, + [navigate] + ); + if (!postTypeObject) { + return null; + } + const selection = searchParams.postIds ?? []; + if (view.type === "list" && selection.length === 0 && posts?.length > 0) { + selection.push(posts[0].id); + } + if (view.type === "list") { + selection.splice(1); + } + return /* @__PURE__ */ React.createElement( + page_default, + { + title: (0, import_i18n47.__)("Patterns"), + subTitle: (0, import_i18n47.__)( + "Reusable design elements for your site. Create once, use everywhere." + ), + className: "pattern-page", + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "tertiary", + size: "compact", + onClick: onReset + }, + (0, import_i18n47.__)("Reset view") + ), labels?.add_new_item && canCreateRecord && /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "primary", + onClick: () => setShowPatternModal(true), + size: "compact" + }, + labels.add_new_item + )), + hasPadding: false + }, + DEFAULT_VIEWS.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "routes-pattern-list__tabs-wrapper" }, /* @__PURE__ */ React.createElement( + Tabs, + { + onSelect: handleTabChange, + selectedTabId: type ?? "all" + }, + /* @__PURE__ */ React.createElement(Tabs.TabList, null, DEFAULT_VIEWS.map( + (filter) => /* @__PURE__ */ React.createElement( + Tabs.Tab, + { + tabId: filter.slug, + key: filter.slug + }, + filter.label + ) + )) + )), + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: posts, + fields, + view, + onChangeView, + actions, + isLoading: isResolving, + paginationInfo: { + totalItems, + totalPages + }, + defaultLayouts: DEFAULT_LAYOUTS, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + postIds: items.length > 0 ? items : void 0, + edit: items.length === 0 ? void 0 : searchParams.edit + } + }); + }, + isItemClickable: (item) => item.type !== PATTERN_TYPES2.theme, + renderItemLink: ({ + item, + ...props + }) => /* @__PURE__ */ React.createElement( + Link, + { + to: `/types/wp_block/edit/${encodeURIComponent( + item.id + )}`, + ...props, + onClick: (event) => { + event.stopPropagation(); + } + } + ) + } + ), + showPatternModal && /* @__PURE__ */ React.createElement( + CreatePatternModal, + { + onClose: () => setShowPatternModal(false), + onSuccess: ({ + pattern + }) => { + setShowPatternModal(false); + navigate({ + to: `/types/wp_block/edit/${encodeURIComponent( + pattern.id + )}` + }); + }, + content: [] + } + ) + ); +} +var stage = PatternList; +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. + *) +*/ diff --git a/src/wp-includes/build/routes/pattern-list/content.min.asset.php b/src/wp-includes/build/routes/pattern-list/content.min.asset.php new file mode 100644 index 0000000000000..cf08962bf7820 --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/content.min.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-block-editor', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-patterns', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-warning'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/lazy-editor', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '43f99c60a9355affec7e'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/pattern-list/content.min.js b/src/wp-includes/build/routes/pattern-list/content.min.js new file mode 100644 index 0000000000000..2c8392b866c0b --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/content.min.js @@ -0,0 +1,14 @@ +var rb=Object.create;var kc=Object.defineProperty;var ob=Object.getOwnPropertyDescriptor;var nb=Object.getOwnPropertyNames;var ib=Object.getPrototypeOf,ab=Object.prototype.hasOwnProperty;var Re=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var sb=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of nb(t))!ab.call(e,n)&&n!==r&&kc(e,n,{get:()=>t[n],enumerable:!(o=ob(t,n))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?rb(ib(e)):{},sb(t||!e||!e.__esModule?kc(r,"default",{value:e,enumerable:!0}):r,e));var z=Re((H_,Mc)=>{Mc.exports=window.wp.element});var qt=Re((z_,Fc)=>{Fc.exports=window.wp.data});var Hs=Re((W_,Lc)=>{Lc.exports=window.wp.preferences});var Vt=Re((o1,Bc)=>{Bc.exports=window.wp.compose});var me=Re((n1,jc)=>{jc.exports=window.React});var k=Re((a1,Wc)=>{Wc.exports=window.ReactJSXRuntime});var of=Re((V1,rf)=>{rf.exports=window.ReactDOM});var af=Re(nf=>{"use strict";var Wo=me();function Sb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Cb=typeof Object.is=="function"?Object.is:Sb,Pb=Wo.useState,Eb=Wo.useEffect,Ob=Wo.useLayoutEffect,Ab=Wo.useDebugValue;function Tb(e,t){var r=t(),o=Pb({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return Ob(function(){n.value=r,n.getSnapshot=t,Js(n)&&i({inst:n})},[e,r,t]),Eb(function(){return Js(n)&&i({inst:n}),e(function(){Js(n)&&i({inst:n})})},[e]),Ab(r),r}function Js(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Cb(e,r)}catch{return!0}}function Ib(e,t){return t()}var Rb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Ib:Tb;nf.useSyncExternalStore=Wo.useSyncExternalStore!==void 0?Wo.useSyncExternalStore:Rb});var lf=Re((N1,sf)=>{"use strict";sf.exports=af()});var X=Re((L1,ff)=>{ff.exports=window.wp.i18n});var Oe=Re((B1,df)=>{df.exports=window.wp.primitives});var Fl=Re((FS,pf)=>{pf.exports=window.wp.privateApis});var K=Re((zS,_f)=>{_f.exports=window.wp.components});var Bl=Re((WS,Sf)=>{Sf.exports=window.wp.keycodes});var zu=Re((MI,ja)=>{var op={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},np=Object.keys(op).join("|"),jw=new RegExp(np,"g"),Hw=new RegExp(np,"");function zw(e){return op[e]}var ip=function(e){return e.replace(jw,zw)},Ww=function(e){return!!e.match(Hw)};ja.exports=ip;ja.exports.has=Ww;ja.exports.remove=ip});var vp=Re((GI,gp)=>{"use strict";gp.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,i;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(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Mo=Re((ck,Kp)=>{Kp.exports=window.wp.date});var yg=Re((oN,wg)=>{wg.exports=window.wp.warning});var lh=Re((s3,sh)=>{sh.exports=window.wp.deprecated});var Rs=Re((E3,yh)=>{yh.exports=window.wp.coreData});var Sh=Re((O3,_h)=>{_h.exports=window.wp.editor});var Vs=Re((A3,Ch)=>{Ch.exports=window.wp.patterns});var Lh=Re((F3,Fh)=>{Fh.exports=window.wp.blockEditor});import{useParams as T_,useNavigate as I_,useSearch as R_,Link as V_,useInvalidate as k_}from"@wordpress/route";var Nc=Object.prototype.hasOwnProperty;function Dc(e,t,r){for(r of e.keys())if(Fr(r,t))return r}function Fr(e,t){var r,o,n;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((o=e.length)===t.length)for(;o--&&Fr(e[o],t[o]););return o===-1}if(r===Set){if(e.size!==t.size)return!1;for(o of e)if(n=o,n&&typeof n=="object"&&(n=Dc(t,n),!n)||!t.has(n))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(o of e)if(n=o[0],n&&typeof n=="object"&&(n=Dc(t,n),!n)||!Fr(o[1],t.get(n)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((o=e.byteLength)===t.byteLength)for(;o--&&e.getInt8(o)===t.getInt8(o););return o===-1}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===t.byteLength)for(;o--&&e[o]===t[o];);return o===-1}if(!r||typeof e=="object"){o=0;for(r in e)if(Nc.call(e,r)&&++o&&!Nc.call(t,r)||!(r in t)||!Fr(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var En=c(z(),1),yi=c(qt(),1),Gs=c(Hs(),1);function zs(e,t,r){return`dataviews-${e}-${t}-${r}`}function Ws(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(a=>a.field)),i=(e.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(o={...o,sort:t.sort}),o}function wi(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(i=>i.field));o={...o,filters:(e.filters??[]).filter(i=>!n.has(i.field))}}return t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),o}function lb(e,t){let r={...e};for(let o of t)delete r[o];return r}function Ys(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:s}=e,l=zs(t,r,o),u=(0,yi.useSelect)(y=>y(Gs.store).get("core/views",l),[l]),{set:f}=(0,yi.useDispatch)(Gs.store),d=u??n,m=Number(a?.page??d.page??1),p=a?.search??d.search??"",g=(0,En.useMemo)(()=>Ws({...d,page:m,search:p},i,n),[d,m,p,i,n]),b=!!u,x=(0,En.useCallback)(y=>{let E={page:y?.page,search:y?.search},V=wi(lb(y,["page","search"]),i,n);s&&!Fr(E,{page:m,search:p})&&s(E);let A=wi(d,i,n),R=wi(n,i,n);Fr(A,V)||(Fr(V,R)?f("core/views",l,void 0):f("core/views",l,V))},[s,m,p,d,n,i,f,l]),_=(0,En.useCallback)(()=>{f("core/views",l,void 0)},[l,f]);return{view:g,isModified:b,updateView:x,resetToDefault:_}}var ub=c(qt(),1),cb=c(Hs(),1);var Et=c(z(),1),Is=c(Vt(),1);var zc=c(me(),1),Hc={};function Us(e,t){let r=zc.useRef(Hc);return r.current===Hc&&(r.current=e(t)),r}function qs(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var Si=c(me(),1);function $s(e,t,r,o){let n=Us(Yc).current;return fb(n,e,t,r,o)&&Uc(n,[e,t,r,o]),n.callback}function Gc(e){let t=Us(Yc).current;return db(t,e)&&Uc(t,e),t.callback}function Yc(){return{callback:null,cleanup:null,refs:[]}}function fb(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function db(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Uc(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{for(let n=0;n=e}function Ks(e){if(!Kc.isValidElement(e))return null;let t=e,r=t.props;return($c(19)?r?.ref:t.ref)??null}function On(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Xc(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function Zc(e,t){return typeof e=="function"?e(t):e}function Qc(e,t){return typeof e=="function"?e(t):e}var Tn={};function _i(e,t,r,o,n){let i={...Xs(e,Tn)};return t&&(i=An(i,t)),r&&(i=An(i,r)),o&&(i=An(i,o)),n&&(i=An(i,n)),i}function Jc(e){if(e.length===0)return Tn;if(e.length===1)return Xs(e[0],Tn);let t={...Xs(e[0],Tn)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function ef(e){return typeof e=="function"}function Xs(e,t){return ef(e)?e(t):e??Tn}function vb(e,t){return t?e?r=>{if(bb(r)){let n=r;hb(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function hb(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Zs(e,t){return t?e?t+" "+e:t:e}function bb(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var xb=Object.freeze([]),Lr=Object.freeze({});var Qs=c(me(),1);function tf(e,t,r={}){let o=t.render,n=wb(t,r);if(r.enabled===!1)return null;let i=r.state??Lr;return yb(e,o,n,i)}function wb(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Lr,ref:a,props:s,stateAttributesMapping:l,enabled:u=!0}=t,f=u?Zc(r,i):void 0,d=u?Qc(o,i):void 0,m=u?Xc(i,l):Lr,p=u?On(m,Array.isArray(s)?Jc(s):s)??Lr:Lr;return typeof document<"u"&&(u?Array.isArray(a)?p.ref=Gc([p.ref,Ks(n),...a]):p.ref=$s(p.ref,Ks(n),a):$s(null,null)),u?(f!==void 0&&(p.className=Zs(p.className,f)),d!==void 0&&(p.style=On(p.style,d)),p):Lr}function yb(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=_i(r,t.props);return n.ref=r.ref,Si.cloneElement(t,n)}if(e&&typeof e=="string")return _b(e,r);throw new Error(qs(8))}function _b(e,t){return e==="button"?(0,Qs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Qs.createElement)("img",{alt:"",...t,key:t.key}):Si.createElement(e,t)}function uf(e){return tf(e.defaultTagName??"div",e,e)}function cf(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{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,ta.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});yf.displayName="DataViewsContext";var $=yf;var Sr=c(X(),1);var yo=c(X(),1),Mn=c(K(),1),At=c(z(),1),Yl=c(Bl(),1);var Cf=c(K(),1),Pf=c(X(),1),Ef=c(k(),1);function Kr({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),u=n?.getValue?.({item:r})||(0,Pf.__)("(no title)");return(0,Ef.jsx)(Cf.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(f=>s!==f):[...e,s])},...a})}var xo=c(K(),1),Tf=c(X(),1),Yo=c(z(),1);var If=c(qt(),1),jl=c(Vt(),1);var Of=c(Fl(),1),{lock:YS,unlock:J}=(0,Of.__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/dataviews");var he=c(k(),1),{Menu:bo,kebabCase:Nb}=J(xo.privateApis);function Db({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(xo.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function Mb({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(bo.Item,{disabled:e.disabled,onClick:t,children:(0,he.jsx)(bo.ItemLabel,{children:o})})}function wo({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,he.jsx)(xo.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${Nb(e.id)}`,children:(0,he.jsx)(e.RenderModal,{items:t,closeModal:r})})}function Hl({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Yo.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,he.jsx)(Mb,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,he.jsxs)(bo.Group,{children:[a(n),n.length>0&&i.length>0&&(0,he.jsx)(bo.Separator,{}),a(i)]})}function Uo({item:e,actions:t,isCompact:r}){let o=(0,If.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Yo.useMemo)(()=>{let s=t.filter(u=>!u.isEligible||u.isEligible(e));return{primaryActions:s.filter(u=>u.isPrimary),eligibleActions:s}},[t,e]),a=(0,jl.useViewportMatch)("medium","<");return r?(0,he.jsx)(Af,{item:e,actions:i,isSmall:!0,registry:o}):(0,he.jsxs)(L,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,he.jsx)(zl,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function zl({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,Yo.useState)(null);return(0,jl.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,he.jsxs)(he.Fragment,{children:[t.map(s=>(0,he.jsx)(Db,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,he.jsx)(wo,{action:n,items:[e],closeModal:()=>i(null)})]})}var qo=c(K(),1),ra=c(X(),1),dt=c(z(),1),Nf=c(qt(),1);var Wl=c(Vt(),1);var Xr=c(X(),1);function Rf(e,t,r){return e>0?(0,Xr.sprintf)((0,Xr._n)("%d Item selected","%d Items selected",e),e):r>t?(0,Xr.sprintf)((0,Xr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,Xr.sprintf)((0,Xr._n)("%d Item","%d Items",t),t)}var qe=c(k(),1);function Fb({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,dt.useState)(!1);return(0,qe.jsxs)(qe.Fragment,{children:[(0,qe.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,qe.jsx)(wo,{action:e,items:t,closeModal:()=>n(!1)})]})}function oa(e,t){return(0,dt.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function $o(e,t){return(0,dt.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function Dn({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,dt.useMemo)(()=>r.filter(l=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,qe.jsx)(qo.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,ra.__)("Deselect all"):(0,ra.__)("Select all")})}function Vf({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,Wl.useViewportMatch)("medium","<")?(0,qe.jsx)(qo.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,qe.jsx)(qo.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var Df=[];function Lb({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,Nf.useRegistry)(),i=(0,dt.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,qe.jsx)(Fb,{action:e,items:i,ActionTriggerComponent:Vf},e.id):(0,qe.jsx)(Vf,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function kf(e,t,r,o,n,i,a,s,l,u){let f=Rf(o.length,e.length,u.totalItems);return(0,qe.jsxs)(L,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,qe.jsx)(Dn,{selection:o,onChangeSelection:l,data:e,actions:t,getItemId:r}),(0,qe.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,qe.jsxs)(L,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(d=>(0,qe.jsx)(Lb,{action:d,selectedItems:i,actionInProgress:a,setActionInProgress:s},d.id)),i.length>0&&(0,qe.jsx)(qo.Button,{icon:Rn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,ra.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{l(Df)}})]})]})}function Bb({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,s]=(0,dt.useState)(null),l=(0,dt.useRef)(null),u=(0,Wl.useViewportMatch)("medium","<"),f=(0,dt.useMemo)(()=>t.filter(g=>g.supportsBulk),[t]),d=(0,dt.useMemo)(()=>o.filter(g=>f.some(b=>!b.isEligible||b.isEligible(g))),[o,f]),m=(0,dt.useMemo)(()=>o.filter(g=>e.includes(n(g))&&d.includes(g)),[e,o,n,d]),p=(0,dt.useMemo)(()=>t.filter(g=>g.supportsBulk&&(!u||g.icon)&&m.some(b=>!g.isEligible||g.isEligible(b))),[t,m,u]);if(a)l.current||(l.current=kf(o,t,n,e,p,m,a,s,r,i));else return l.current&&(l.current=null),kf(o,t,n,e,p,m,a,s,r,i);return l.current}function na(){let{data:e,selection:t,actions:r=Df,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,dt.useContext)($);return(0,qe.jsx)(Bb,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var wr=c(X(),1);var yr=c(K(),1),Zr=c(z(),1);function ia(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var te=c(k(),1),{Menu:pe}=J(yr.privateApis);function jb({children:e}){return Zr.Children.toArray(e).filter(Boolean).map((t,r)=>(0,te.jsxs)(Zr.Fragment,{children:[r>0&&(0,te.jsx)(pe.Separator,{}),t]},r))}var Hb=(0,Zr.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:u=!0},f){let d=r.fields??[],m=d?.indexOf(t),p=r.sort?.field===t,g=!1,b=!1,x=!1,_=[],y=o.find(P=>P.id===t),{setIsShowingFilter:E}=(0,Zr.useContext)($);if(!y)return null;g=y.enableHiding!==!1,b=y.enableSorting!==!1;let V=y.header;if(_=!!y.filterBy&&y.filterBy?.operators||[],x=!r.filters?.some(P=>t===P.field)&&!!(y.hasElements||y.Edit)&&y.filterBy!==!1&&!y.filterBy?.isPrimary,!b&&!s&&!g&&!x)return V;let A=ia(r,o).filter(P=>!d.includes(P.id)),R=(l||u)&&!!A.length,D=(0,wr.isRTL)();return(0,te.jsxs)(pe,{children:[(0,te.jsxs)(pe.TriggerButton,{render:(0,te.jsx)(yr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[V,r.sort&&p&&(0,te.jsx)("span",{"aria-hidden":"true",children:gf[r.sort.direction]})]}),(0,te.jsx)(pe.Popover,{style:{minWidth:"240px"},children:(0,te.jsxs)(jb,{children:[b&&(0,te.jsx)(pe.Group,{children:Zi.map(P=>{let S=r.sort&&p&&r.sort.direction===P,N=`${t}-${P}`;return(0,te.jsx)(pe.RadioItem,{name:"view-table-sorting",value:N,checked:S,onChange:()=>{n({...r,sort:{field:t,direction:P},showLevels:!1})},children:(0,te.jsx)(pe.ItemLabel,{children:Ji[P]})},N)})}),x&&(0,te.jsx)(pe.Group,{children:(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(yr.Icon,{icon:Vn}),onClick:()=>{a(t),E(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:_[0]}]})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Add filter")})})}),(s||g||R)&&y&&(0,te.jsxs)(pe.Group,{children:[s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(yr.Icon,{icon:ol}),disabled:D?m>=d.length-1:m<1,onClick:()=>{let P=D?m+1:m-1,S=[...d];S.splice(m,1),S.splice(P,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Move left")})}),s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(yr.Icon,{icon:il}),disabled:D?m<1:m>=d.length-1,onClick:()=>{let P=D?m-1:m+1,S=[...d];S.splice(m,1),S.splice(P,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Move right")})}),l&&!!A.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Insert left")})}),(0,te.jsx)(pe.Popover,{children:A.map(P=>{let S=D?m+1:m;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),P.id,...d.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:P.label})},P.id)})})]}),u&&!!A.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Insert right")})}),(0,te.jsx)(pe.Popover,{children:A.map(P=>{let S=D?m:m+1;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),P.id,...d.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:P.label})},P.id)})})]}),g&&y&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(yr.Icon,{icon:Nn}),onClick:()=>{i(y),n({...r,fields:d.filter(P=>P!==t)})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,wr.__)("Hide column")})})]})]})})]})}),zb=Hb,Ko=zb;var Mf=c(z(),1),Gl=c(k(),1);function Wb({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function Qr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,Gl.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,Mf.cloneElement)(l,{onClick:u=>{u.stopPropagation(),l.props.onClick&&l.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(u))}})}let s=Wb({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,Gl.jsx)("div",{...s,...a,children:i})}var er=c(k(),1);function Gb({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,er.jsxs)(L,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,er.jsx)(Qr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,er.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,er.jsxs)(L,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,er.jsxs)(Qr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,er.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,er.jsx)(r.render,{item:e,field:r})]}),n&&(0,er.jsx)(n.render,{item:e,field:n})]})]})}var aa=Gb;var Ff=c(Vt(),1),Xo=c(z(),1),Lf=c(X(),1),Yb=e=>(0,Lf.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function Bf({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Xo.useState)(!1),n=(0,Ff.useDebounce)((0,Xo.useCallback)(()=>{let i=e.current;i&&o(Yb(i))},[e,o]),200);return(0,Xo.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function Bt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Jr=c(K(),1),Hf=c(X(),1),zf=c(z(),1);var kt=c(k(),1);function jf({field:e,isVisible:t,onToggleVisibility:r}){return(0,kt.jsx)(Jr.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,kt.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,kt.jsx)("div",{style:{height:24,width:24},children:t&&(0,kt.jsx)(Jr.Icon,{icon:In})}),(0,kt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function Ub(e){return!!e}function sa({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,zf.useContext)($),n=ia(t,r);if(!n?.length)return null;let i=r.find(g=>g.id===t.titleField),a=r.find(g=>g.id===t.mediaField),s=r.find(g=>g.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:g})=>Ub(g)),u=t.fields??[],f=n.filter(g=>u.includes(g.id)).length,d=l.filter(({isVisibleFlag:g})=>t[g]??!0),m=d.length+f,p=m===1&&d.length===1;return(0,kt.jsxs)(L,{direction:"column",className:"dataviews-field-control",children:[e&&(0,kt.jsx)(Jr.BaseControl.VisualLabel,{children:(0,Hf.__)("Properties")}),(0,kt.jsx)(L,{direction:"column",className:"dataviews-view-config__properties",children:(0,kt.jsxs)(Jr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:g,isVisibleFlag:b})=>{let x=t[b]??!0,_=p&&x?{...g,enableHiding:!1}:g;return(0,kt.jsx)(jf,{field:_,isVisible:x,onToggleVisibility:()=>{o({...t,[b]:!x})}},g.id)}),n.map(g=>{let b=u.includes(g.id),x=m===1&&b?{...g,enableHiding:!1}:g;return(0,kt.jsx)(jf,{field:x,isVisible:b,onToggleVisibility:()=>{o({...t,fields:b?u.filter(_=>_!==g.id):[...u,g.id]})}},g.id)})]})})]})}var Z=c(k(),1);function qb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=q("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,Z.jsx)("div",{className:i,children:(0,Z.jsx)(n.render,{item:e,field:n})})}function Wf({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:u,selection:f,getItemId:d,isItemClickable:m,onClickItem:p,renderItemLink:g,onChangeSelection:b,isActionsColumnSticky:x,posinset:_}){let{paginationInfo:y}=(0,At.useContext)($),E=oa(o,t),V=E&&f.includes(i),{showTitle:A=!0,showMedia:R=!0,showDescription:D=!0,infiniteScrollEnabled:P}=a,S=(0,At.useRef)(!1),N=a.fields??[],M=s&&A||l&&R||u&&D;return(0,Z.jsxs)("tr",{className:q("dataviews-view-table__row",{"is-selected":E&&V,"has-bulk-actions":E}),onTouchStart:()=>{S.current=!0},"aria-setsize":P?y.totalItems:void 0,"aria-posinset":_,role:P?"article":void 0,onMouseDown:I=>{let v=(0,Yl.isAppleOS)()?I.metaKey:I.ctrlKey;I.button===0&&v&&window.navigator.userAgent.toLowerCase().includes("firefox")&&I?.preventDefault()},onClick:I=>{if(!E)return;((0,Yl.isAppleOS)()?I.metaKey:I.ctrlKey)&&!S.current&&document.getSelection()?.type!=="Range"&&b(f.includes(i)?f.filter(w=>i!==w):[...f,i])},children:[e&&(0,Z.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,Z.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,Z.jsx)(Kr,{item:t,selection:f,onChangeSelection:b,getItemId:d,titleField:s,disabled:!E})})}),M&&(0,Z.jsx)("td",{children:(0,Z.jsx)(aa,{item:t,level:r,titleField:A?s:void 0,mediaField:R?l:void 0,descriptionField:D?u:void 0,isItemClickable:m,onClickItem:p,renderItemLink:g})}),N.map(I=>{let{width:v,maxWidth:w,minWidth:T,align:h}=a.layout?.styles?.[I]??{};return(0,Z.jsx)("td",{style:{width:v,maxWidth:w,minWidth:T},children:(0,Z.jsx)(qb,{fields:n,item:t,column:I,align:h})},I)}),!!o?.length&&(0,Z.jsx)("td",{className:q("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":x}),onClick:I=>I.stopPropagation(),children:(0,Z.jsx)(Uo,{item:t,actions:o})})]})}function $b({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:u,onClickItem:f,isItemClickable:d,renderItemLink:m,view:p,className:g,empty:b}){let{containerRef:x}=(0,At.useContext)($),_=(0,At.useRef)(new Map),y=(0,At.useRef)(),[E,V]=(0,At.useState)(),A=$o(e,t),[R,D]=(0,At.useState)(null);(0,At.useEffect)(()=>{y.current&&(y.current.focus(),y.current=void 0)});let P=(0,At.useId)(),S=Bf({scrollContainerRef:x,enabled:!!e?.length});if(E){y.current=E,V(void 0);return}let N=Y=>{let Ie=_.current.get(Y.id),Qe=Ie?_.current.get(Ie.fallback):void 0;V(Qe?.node)},M=Y=>{Y.preventDefault(),Y.stopPropagation();let Ie={getBoundingClientRect:()=>({x:Y.clientX,y:Y.clientY,top:Y.clientY,left:Y.clientX,right:Y.clientX,bottom:Y.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{D(Ie)})},I=!!t?.length,v=r.find(Y=>Y.id===p.titleField),w=r.find(Y=>Y.id===p.mediaField),T=r.find(Y=>Y.id===p.descriptionField),h=p.groupBy?.field?r.find(Y=>Y.id===p.groupBy?.field):null,C=h?Bt(t,h):null,{showTitle:F=!0,showMedia:O=!0,showDescription:W=!0}=p,U=v&&F||w&&O||T&&W,Ze=p.fields??[],ot=(Y,Ie)=>Qe=>{Qe?_.current.set(Y,{node:Qe,fallback:Ze[Ie>0?Ie-1:1]}):_.current.delete(Y)},de=p.infiniteScrollEnabled&&!C,Ee=(0,yo.isRTL)();return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)("table",{className:q("dataviews-view-table",g,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":A}),"aria-busy":i,"aria-describedby":P,role:de?"feed":void 0,children:[(0,Z.jsxs)("colgroup",{children:[A&&(0,Z.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),U&&(0,Z.jsx)("col",{className:"dataviews-view-table__col-first-data"}),Ze.map((Y,Ie)=>(0,Z.jsx)("col",{className:q(`dataviews-view-table__col-${Y}`,{"dataviews-view-table__col-first-data":!U&&Ie===0})},`col-${Y}`)),!!e?.length&&(0,Z.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),R&&(0,Z.jsx)(Mn.Popover,{anchor:R,onClose:()=>D(null),placement:"bottom-start",children:(0,Z.jsx)(sa,{showLabel:!1})}),(0,Z.jsx)("thead",{onContextMenu:M,children:(0,Z.jsxs)("tr",{className:"dataviews-view-table__row",children:[A&&(0,Z.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:M,children:(0,Z.jsx)(Dn,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),U&&(0,Z.jsx)("th",{scope:"col",children:v&&(0,Z.jsx)(Ko,{ref:ot(v.id,0),fieldId:v.id,view:p,fields:r,onChangeView:a,onHide:N,setOpenedFilter:u,canMove:!1,canInsertLeft:Ee?p.layout?.enableMoving??!0:!1,canInsertRight:Ee?!1:p.layout?.enableMoving??!0})}),Ze.map((Y,Ie)=>{let{width:Qe,maxWidth:Ut,minWidth:Mr,align:zo}=p.layout?.styles?.[Y]??{},vo=p.layout?.enableMoving??!0;return(0,Z.jsx)("th",{style:{width:Qe,maxWidth:Ut,minWidth:Mr,textAlign:zo},"aria-sort":p.sort?.direction&&p.sort?.field===Y?Qi[p.sort.direction]:void 0,scope:"col",children:(0,Z.jsx)(Ko,{ref:ot(Y,Ie),fieldId:Y,view:p,fields:r,onChangeView:a,onHide:N,setOpenedFilter:u,canMove:vo,canInsertLeft:vo,canInsertRight:vo})},Y)}),!!e?.length&&(0,Z.jsx)("th",{className:q("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!S}),children:(0,Z.jsx)("span",{className:"dataviews-view-table-header",children:(0,yo.__)("Actions")})})]})}),I&&h&&C?Array.from(C.entries()).map(([Y,Ie])=>(0,Z.jsxs)("tbody",{children:[(0,Z.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,Z.jsx)("td",{colSpan:Ze.length+(U?1:0)+(A?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?Y:(0,yo.sprintf)((0,yo.__)("%1$s: %2$s"),h.label,Y)})}),Ie.map((Qe,Ut)=>(0,Z.jsx)(Wf,{item:Qe,level:p.showLevels&&typeof n=="function"?n(Qe):void 0,hasBulkActions:A,actions:e,fields:r,id:o(Qe)||Ut.toString(),view:p,titleField:v,mediaField:w,descriptionField:T,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S},o(Qe)))]},`group-${Y}`)):(0,Z.jsx)("tbody",{children:I&&t.map((Y,Ie)=>(0,Z.jsx)(Wf,{item:Y,level:p.showLevels&&typeof n=="function"?n(Y):void 0,hasBulkActions:A,actions:e,fields:r,id:o(Y)||Ie.toString(),view:p,titleField:v,mediaField:w,descriptionField:T,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S,posinset:de?Ie+1:void 0},o(Y)))})]}),(0,Z.jsxs)("div",{className:q({"dataviews-loading":i,"dataviews-no-results":!I&&!i}),id:P,children:[!I&&(i?(0,Z.jsx)("p",{children:(0,Z.jsx)(Mn.Spinner,{})}):b),I&&i&&(0,Z.jsx)("p",{className:"dataviews-loading-more",children:(0,Z.jsx)(Mn.Spinner,{})})]})]})}var Gf=$b;var ql=c(K(),1),ca=c(X(),1);var Nt=c(K(),1);var Fn=c(X(),1),Uf=c(Vt(),1),qf=c(Bl(),1),ua=c(z(),1);var Kb=c(K(),1),Xb=c(X(),1),la=c(z(),1);var Zb=c(k(),1),Qb=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],Jb=Qb[2].value;function Yf(){let e=(0,la.useContext)($),t=e.view;return(0,la.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??Jb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ue=c(k(),1),{Badge:ex}=J(Nt.privateApis);function tx(e,t){let r=[];for(let o=0,n=e.length;o{if(_.onClickCapture?.(h),(0,qf.isAppleOS)()?h.metaKey:h.ctrlKey){if(h.stopPropagation(),h.preventDefault(),!R)return;o(r.includes(D)?r.filter(C=>D!==C):[...r,D])}},children:[(0,ue.jsx)(Qr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:q("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!M}),...w,children:I}),b&&(0,ue.jsx)(Kr,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:d,disabled:!R}),!!u?.length&&(0,ue.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ue.jsx)(Uo,{item:l,actions:u,isCompact:!0})}),E&&(0,ue.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ue.jsx)(Qr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...T,title:d?.getValueFormatted({item:l,field:d})||void 0,children:v})}),(0,ue.jsxs)(L,{direction:"column",gap:"xs",children:[A&&m?.render&&(0,ue.jsx)(m.render,{item:l,field:m}),!!g?.length&&(0,ue.jsx)(L,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:g.map(h=>(0,ue.jsx)(ex,{className:"dataviews-view-grid__field-value",children:(0,ue.jsx)(h.render,{item:l,field:h})},h.id))}),!!p?.length&&(0,ue.jsx)(L,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(h=>(0,ue.jsx)(Nt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)(Nt.Tooltip,{text:h.label,children:(0,ue.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-name",children:h.header})}),(0,ue.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ue.jsx)(h.render,{item:l,field:h})})]})},h.id))})]})]})});function Ul({data:e,isInfiniteScroll:t,className:r,isLoading:o,view:n,fields:i,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:f,getItemId:d,actions:m}){let{paginationInfo:p,resizeObserverRef:g}=(0,ua.useContext)($),b=Yf(),x=$o(m,e),_=i.find(S=>S.id===n?.titleField),y=i.find(S=>S.id===n?.mediaField),E=i.find(S=>S.id===n?.descriptionField),V=n.fields??[],{regularFields:A,badgeFields:R}=V.reduce((S,N)=>{let M=i.find(v=>v.id===N);if(!M)return S;let I=n.layout?.badgeFields?.includes(N)?"badgeFields":"regularFields";return S[I].push(M),S},{regularFields:[],badgeFields:[]}),D="900px",P=Math.ceil(e.length/b);return(0,ue.jsx)(Nt.Composite,{role:t?"feed":"grid",className:q("dataviews-view-grid",r),focusWrap:!0,"aria-busy":o,"aria-rowcount":t?void 0:P,ref:g,children:tx(e,b).map((S,N)=>(0,ue.jsx)(Nt.Composite.Row,{render:(0,ue.jsx)("div",{role:"row","aria-rowindex":N+1,"aria-label":(0,Fn.sprintf)((0,Fn.__)("Row %d"),N+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${b}, minmax(0, 1fr) )`}}),children:S.map((M,I)=>{let v=N*b+I;return(0,ue.jsx)(Nt.Composite.Item,{render:w=>(0,ue.jsx)(rx,{...w,role:t?"article":"gridcell","aria-setsize":t?p.totalItems:void 0,"aria-posinset":t?v+1:void 0,view:n,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:f,getItemId:d,item:M,actions:m,mediaField:y,titleField:_,descriptionField:E,regularFields:A,badgeFields:R,hasBulkActions:x,config:{sizes:D}})},d(M))})},N))})}var xt=c(k(),1);function ox({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:u,view:f,className:d,empty:m}){let p=!!t?.length,g=f.groupBy?.field?r.find(y=>y.id===f.groupBy?.field):null,b=g?Bt(t,g):null,x=f.infiniteScrollEnabled&&!b,_={className:d,isLoading:n,view:f,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,xt.jsxs)(xt.Fragment,{children:[p&&g&&b&&(0,xt.jsx)(L,{direction:"column",gap:"lg",children:Array.from(b.entries()).map(([y,E])=>(0,xt.jsxs)(L,{direction:"column",gap:"sm",children:[(0,xt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?y:(0,ca.sprintf)((0,ca.__)("%1$s: %2$s"),g.label,y)}),(0,xt.jsx)(Ul,{..._,data:E,isInfiniteScroll:!1})]},y))}),p&&!b&&(0,xt.jsx)(Ul,{..._,data:t,isInfiniteScroll:!!x}),!p&&(0,xt.jsx)("div",{className:q({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,xt.jsx)("p",{children:(0,xt.jsx)(ql.Spinner,{})}):m}),p&&n&&(0,xt.jsx)("p",{className:"dataviews-loading-more",children:(0,xt.jsx)(ql.Spinner,{})})]})}var $f=ox;var fa=c(Vt(),1),$e=c(K(),1),Ge=c(z(),1),Ln=c(X(),1);var Zl=c(qt(),1);var G=c(k(),1),{Menu:$l}=J($e.privateApis);function Kl(e){return`${e}-item-wrapper`}function nx(e,t){return`${e}-primary-action-${t}`}function Xl(e){return`${e}-dropdown`}function ix({idPrefix:e,primaryAction:t,item:r}){let o=(0,Zl.useRegistry)(),[n,i]=(0,Ge.useState)(!1),a=nx(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,G.jsx)("div",{role:"gridcell",children:(0,G.jsx)($e.Composite.Item,{id:a,render:(0,G.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,G.jsx)(wo,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,G.jsx)("div",{role:"gridcell",children:(0,G.jsx)($e.Composite.Item,{id:a,render:(0,G.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function Kf({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:u,onDropdownTriggerKeyDown:f,posinset:d}){let{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:b}=e,x=(0,Ge.useRef)(null),_=`${r}-label`,y=`${r}-description`,E=(0,Zl.useRegistry)(),[V,A]=(0,Ge.useState)(!1),[R,D]=(0,Ge.useState)(null),P=({type:h})=>{A(h==="mouseenter")},{paginationInfo:S}=(0,Ge.useContext)($);(0,Ge.useEffect)(()=>{o&&x.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:N,eligibleActions:M}=(0,Ge.useMemo)(()=>{let h=t.filter(F=>!F.isEligible||F.isEligible(n));return{primaryAction:h.filter(F=>F.isPrimary)[0],eligibleActions:h}},[t,n]),I=N&&t.length===1,v=p&&a?.render?(0,G.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,G.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,w=m&&i?.render?(0,G.jsx)(i.render,{item:n,field:i}):null,T=M?.length>0&&(0,G.jsxs)(L,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[N&&(0,G.jsx)(ix,{idPrefix:r,primaryAction:N,item:n}),!I&&(0,G.jsxs)("div",{role:"gridcell",children:[(0,G.jsxs)($l,{placement:"bottom-end",children:[(0,G.jsx)($l.TriggerButton,{render:(0,G.jsx)($e.Composite.Item,{id:Xl(r),render:(0,G.jsx)($e.Button,{size:"small",icon:kn,label:(0,Ln.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:f})})}),(0,G.jsx)($l.Popover,{children:(0,G.jsx)(Hl,{actions:M,item:n,registry:E,setActiveModalAction:D})})]}),!!R&&(0,G.jsx)(wo,{action:R,items:[n],closeModal:()=>D(null)})]})]});return(0,G.jsx)($e.Composite.Row,{ref:x,render:(0,G.jsx)("div",{"aria-posinset":d,"aria-setsize":b?S.totalItems:void 0}),role:b?"article":"row",className:q({"is-selected":o,"is-hovered":V}),onMouseEnter:P,onMouseLeave:P,children:(0,G.jsxs)(L,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,G.jsx)("div",{role:"gridcell",children:(0,G.jsx)($e.Composite.Item,{id:Kl(r),"aria-pressed":o,"aria-labelledby":_,"aria-describedby":y,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,G.jsxs)(L,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[v,(0,G.jsxs)(L,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,G.jsxs)(L,{direction:"row",align:"center",children:[(0,G.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:_,children:w}),T]}),g&&s?.render&&(0,G.jsx)("div",{className:"dataviews-view-list__field",children:(0,G.jsx)(s.render,{item:n,field:s})}),(0,G.jsx)("div",{className:"dataviews-view-list__fields",id:y,children:u.map(h=>(0,G.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,G.jsx)($e.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:h.label}),(0,G.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,G.jsx)(h.render,{item:n,field:h})})]},h.id))})]})]})]})})}function ax(e){return!!e}function Ql(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:u,empty:f}=e,d=(0,fa.useInstanceId)(Ql,"view-list"),m=r?.findLast(w=>s.includes(n(w))),p=o.find(w=>w.id===l.titleField),g=o.find(w=>w.id===l.mediaField),b=o.find(w=>w.id===l.descriptionField),x=(l?.fields??[]).map(w=>o.find(T=>w===T.id)).filter(ax),_=w=>a([n(w)]),y=(0,Ge.useCallback)(w=>`${d}-${n(w)}`,[d,n]),E=(0,Ge.useCallback)((w,T)=>T.startsWith(y(w)),[y]),[V,A]=(0,Ge.useState)(void 0);(0,Ge.useEffect)(()=>{m&&A(Kl(y(m)))},[m,y]);let R=r.findIndex(w=>E(w,V??"")),D=(0,fa.usePrevious)(R),P=R!==-1,S=(0,Ge.useCallback)((w,T)=>{let h=Math.min(r.length-1,Math.max(0,w));if(!r[h])return;let C=y(r[h]),F=T(C);A(F),document.getElementById(F)?.focus()},[r,y]);(0,Ge.useEffect)(()=>{!P&&(D!==void 0&&D!==-1)&&S(D,Kl)},[P,S,D]);let N=(0,Ge.useCallback)(w=>{w.key==="ArrowDown"&&(w.preventDefault(),S(R+1,Xl)),w.key==="ArrowUp"&&(w.preventDefault(),S(R-1,Xl))},[S,R]),M=r?.length;if(!M)return(0,G.jsx)("div",{className:q({"dataviews-loading":i,"dataviews-no-results":!M&&!i}),children:!M&&(i?(0,G.jsx)("p",{children:(0,G.jsx)($e.Spinner,{})}):f)});let I=l.groupBy?.field?o.find(w=>w.id===l.groupBy?.field):null,v=I?Bt(r,I):null;return M&&I&&v?(0,G.jsx)($e.Composite,{id:`${d}`,render:(0,G.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:V,setActiveId:A,children:(0,G.jsx)(L,{direction:"column",gap:"lg",className:q("dataviews-view-list",u),children:Array.from(v.entries()).map(([w,T])=>(0,G.jsxs)(L,{direction:"column",gap:"sm",children:[(0,G.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?w:(0,Ln.sprintf)((0,Ln.__)("%1$s: %2$s"),I.label,w)}),T.map(h=>{let C=y(h);return(0,G.jsx)(Kf,{view:l,idPrefix:C,actions:t,item:h,isSelected:h===m,onSelect:_,mediaField:g,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:N},C)})]},w))})}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)($e.Composite,{id:d,render:(0,G.jsx)("div",{}),className:q("dataviews-view-list",u,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density)}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:V,setActiveId:A,children:r.map((w,T)=>{let h=y(w);return(0,G.jsx)(Kf,{view:l,idPrefix:h,actions:t,item:w,isSelected:w===m,onSelect:_,mediaField:g,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:N,posinset:l.infiniteScrollEnabled?T+1:void 0},h)})}),M&&i&&(0,G.jsx)("p",{className:"dataviews-loading-more",children:(0,G.jsx)($e.Spinner,{})})]})}var eu=c(K(),1);var da=c(X(),1),Xf=c(z(),1);var Zo=c(k(),1);function Zf({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Xf.createInterpolateElement)((0,da.sprintf)((0,da.__)("%s: "),r.label).trim(),{groupName:(0,Zo.jsx)(r.render,{item:t[0],field:r})}):(0,Zo.jsx)(r.render,{item:t[0],field:r});return(0,Zo.jsxs)(L,{direction:"column",className:"dataviews-view-activity__group",children:[(0,Zo.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var Qf=c(K(),1),_o=c(z(),1),Jf=c(qt(),1),ed=c(Vt(),1);var je=c(k(),1);function sx(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:u,renderItemLink:f,isItemClickable:d}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:b}=t,x=(0,_o.useRef)(null),_=(0,Jf.useRegistry)(),{paginationInfo:y}=(0,_o.useContext)($),{primaryActions:E,eligibleActions:V}=(0,_o.useMemo)(()=>{let M=r.filter(v=>!v.isEligible||v.isEligible(o));return{primaryActions:M.filter(v=>v.isPrimary),eligibleActions:M}},[r,o]),A=(0,ed.useViewportMatch)("medium","<"),R=t.layout?.density??"balanced",D=p&&R!=="compact"&&i?.render?(0,je.jsx)(i.render,{item:o,field:i,config:{sizes:R==="comfortable"?"32px":"24px"}}):null,P=(0,je.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,je.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),S=m&&n?.render?(0,je.jsx)(n.render,{item:o,field:n}):null,N=(0,_o.useMemo)(()=>R==="comfortable"?"md":"sm",[R]);return(0,je.jsx)("div",{ref:x,role:b?"article":void 0,"aria-posinset":l,"aria-setsize":b?y.totalItems:void 0,className:q("dataviews-view-activity__item",R==="compact"&&"is-compact",R==="balanced"&&"is-balanced",R==="comfortable"&&"is-comfortable"),children:(0,je.jsxs)(L,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,je.jsx)(L,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:P}),(0,je.jsxs)(L,{direction:"column",gap:N,align:"flex-start",className:"dataviews-view-activity__item-content",children:[S&&(0,je.jsx)(Qr,{item:o,isItemClickable:d,onClickItem:u,renderItemLink:f,className:"dataviews-view-activity__item-title",children:S}),g&&a&&(0,je.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,je.jsx)(a.render,{item:o,field:a})}),(0,je.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(M=>(0,je.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,je.jsx)(Qf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:M.label}),(0,je.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,je.jsx)(M.render,{item:o,field:M})})]},M.id))}),!!E?.length&&(0,je.jsx)(zl,{item:o,actions:E,registry:_,buttonVariant:"secondary"})]}),(E.length0)&&(0,je.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,je.jsx)(Uo,{item:o,actions:V,isCompact:!0})})]})})}var td=sx;var rd=c(me(),1);function lx(e){return!!e}function Jl(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),s=r.find(u=>u.id===n.descriptionField),l=(n?.fields??[]).map(u=>r.find(f=>u===f.id)).filter(lx);return t.map((u,f)=>(0,rd.createElement)(td,{...e,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var wt=c(k(),1);function od(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=r?.length;if(!s)return(0,wt.jsx)("div",{className:q({"dataviews-loading":n,"dataviews-no-results":!s&&!n}),children:!s&&(n?(0,wt.jsx)("p",{children:(0,wt.jsx)(eu.Spinner,{})}):t)});let l=q("dataviews-view-activity",a),u=i.groupBy?.field?o.find(m=>m.id===i.groupBy?.field):null,f=u?Bt(r,u):null,d=f?Array.from(f.entries()):[];return s&&u&&f?(0,wt.jsx)(L,{direction:"column",gap:"sm",className:l,children:d.map(([m,p])=>(0,wt.jsx)(Zf,{groupName:m,groupData:p,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,wt.jsx)(Jl,{...e,data:p})},m))}):(0,wt.jsxs)(wt.Fragment,{children:[(0,wt.jsx)("div",{className:l,role:i.infiniteScrollEnabled?"feed":void 0,children:(0,wt.jsx)(Jl,{...e})}),s&&n&&(0,wt.jsx)("p",{className:"dataviews-loading-more",children:(0,wt.jsx)(eu.Spinner,{})})]})}var Tt=c(K(),1),jn=c(X(),1),cd=c(Vt(),1),fd=c(z(),1);var id=c(K(),1),ux=c(qt(),1),ma=c(z(),1);var cx=c(X(),1);var Bn=c(K(),1),Qo=c(z(),1),Dt=c(X(),1);var _r=c(k(),1);function tu(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Qo.useContext)($);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Dt.sprintf)((0,Dt.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,_r.jsxs)(L,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,_r.jsx)(L,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,Qo.createInterpolateElement)((0,Dt.sprintf)((0,Dt._x)("
      Page
      %1$s
      of %2$d
      ","paging"),"",o),{div:(0,_r.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,_r.jsx)(Bn.SelectControl,{"aria-label":(0,Dt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,_r.jsxs)(L,{direction:"row",gap:"xs",align:"center",children:[(0,_r.jsx)(Bn.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Dt.__)("Previous page"),icon:(0,Dt.isRTL)()?Gi:Ui,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,_r.jsx)(Bn.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Dt.__)("Next page"),icon:(0,Dt.isRTL)()?Ui:Gi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var nd=(0,Qo.memo)(tu);var ad=c(k(),1);function pa(e){return(0,ma.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var sd=c(z(),1);var ld=c(k(),1),ru=(0,sd.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,ld.jsx)("div",{ref:o,className:q("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var ee=c(k(),1),{Badge:fx}=J(Tt.privateApis);function ud({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:u,badgeFields:f,config:d,posinset:m,setsize:p}){let{showTitle:g=!0,showMedia:b=!0,showDescription:x=!0}=e,_=n(i),y=r.includes(_),E=a?.render?(0,ee.jsx)(a.render,{item:i,field:a,config:d}):null,V=g&&s?.render?(0,ee.jsx)(s.render,{item:i,field:s}):null;return(0,ee.jsxs)(Tt.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,jn.__)("(no title)"):void 0,render:({children:A,...R})=>(0,ee.jsx)(L,{direction:"column",children:A,...R}),role:"option","aria-posinset":m,"aria-setsize":p,className:q("dataviews-view-picker-grid__card",{"is-selected":y}),"aria-selected":y,onClick:()=>{if(y)o(r.filter(A=>_!==A));else{let A=t?[...r,_]:[_];o(A)}},children:[b&&E&&(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__media",children:E}),b&&E&&(0,ee.jsx)(Kr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),g&&(0,ee.jsx)(L,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:V})}),(0,ee.jsxs)(L,{direction:"column",gap:"xs",children:[x&&l?.render&&(0,ee.jsx)(l.render,{item:i,field:l}),!!f?.length&&(0,ee.jsx)(L,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:f.map(A=>(0,ee.jsx)(fx,{className:"dataviews-view-picker-grid__field-value",children:(0,ee.jsx)(A.render,{item:i,field:A})},A.id))}),!!u?.length&&(0,ee.jsx)(L,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(A=>(0,ee.jsx)(Tt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(Tt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:A.header}),(0,ee.jsx)(Tt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,ee.jsx)(A.render,{item:i,field:A})})]})},A.id))})]})]},_)}function dd({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,cd.useInstanceId)(dd,"dataviews-view-picker-grid-group__header");return(0,ee.jsxs)(L,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,ee.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,jn.sprintf)((0,jn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function dx({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:u}){let{resizeObserverRef:f,paginationInfo:d,itemListLabel:m}=(0,fd.useContext)($),p=r.find(v=>v.id===s?.titleField),g=r.find(v=>v.id===s?.mediaField),b=r.find(v=>v.id===s?.descriptionField),x=s.fields??[],{regularFields:_,badgeFields:y}=x.reduce((v,w)=>{let T=r.find(C=>C.id===w);if(!T)return v;let h=s.layout?.badgeFields?.includes(w)?"badgeFields":"regularFields";return v[h].push(T),v},{regularFields:[],badgeFields:[]}),E=!!t?.length,V=s.layout?.previewSize,A=pa(e),R="900px",D=s.groupBy?.field?r.find(v=>v.id===s.groupBy?.field):null,P=D?Bt(t,D):null,S=s.infiniteScrollEnabled&&!P,N=s?.page??1,M=s?.perPage??0,I=S?d?.totalItems:void 0;return(0,ee.jsxs)(ee.Fragment,{children:[E&&D&&P&&(0,ee.jsx)(Tt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,className:q("dataviews-view-picker-grid",l),"aria-label":m,render:({children:v,...w})=>(0,ee.jsx)(L,{direction:"column",gap:"lg",children:v,...w}),children:Array.from(P.entries()).map(([v,w])=>(0,ee.jsx)(dd,{groupName:v,groupField:D,showLabel:s.groupBy?.showLabel!==!1,children:(0,ee.jsx)(ru,{previewSize:V,style:{gridTemplateColumns:V&&`repeat(auto-fill, minmax(${V}px, 1fr))`},"aria-busy":n,ref:f,children:w.map(T=>{let h=(N-1)*M+t.indexOf(T)+1;return(0,ee.jsx)(ud,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:T,mediaField:g,titleField:p,descriptionField:b,regularFields:_,badgeFields:y,config:{sizes:R},posinset:h,setsize:I},o(T))})})},v))}),E&&!P&&(0,ee.jsx)(Tt.Composite,{render:(0,ee.jsx)(ru,{className:q("dataviews-view-picker-grid",l),previewSize:V,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,"aria-label":m,children:t.map((v,w)=>{let T=S?w+1:void 0;return S||(T=(N-1)*M+w+1),(0,ee.jsx)(ud,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:v,mediaField:g,titleField:p,descriptionField:b,regularFields:_,badgeFields:y,config:{sizes:R},posinset:T,setsize:I},o(v))})}),!E&&(0,ee.jsx)("div",{className:q({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,ee.jsx)("p",{children:(0,ee.jsx)(Tt.Spinner,{})}):u}),E&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(Tt.Spinner,{})})]})}var md=dx;var ga=c(X(),1),So=c(K(),1),jt=c(z(),1);var re=c(k(),1);function mx({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=q("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,re.jsx)("div",{className:i,children:(0,re.jsx)(n.render,{item:e,field:n})})}function pd({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:u,multiselect:f,posinset:d}){let{paginationInfo:m}=(0,jt.useContext)($),p=s.includes(r),[g,b]=(0,jt.useState)(!1),{showTitle:x=!0,showMedia:_=!0,showDescription:y=!0,infiniteScrollEnabled:E}=o,V=()=>{b(!0)},A=()=>{b(!1)},R=o.fields??[],D=n&&x||i&&_||a&&y;return(0,re.jsxs)(So.Composite.Item,{render:({children:P,...S})=>(0,re.jsx)("tr",{className:q("dataviews-view-table__row",{"is-selected":p,"is-hovered":g}),onMouseEnter:V,onMouseLeave:A,children:P,...S}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":d,role:E?"article":"option",onClick:()=>{if(p)u(s.filter(P=>r!==P));else{let P=f?[...s,r]:[r];u(P)}},children:[(0,re.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,re.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,re.jsx)(Kr,{item:e,selection:s,onChangeSelection:u,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,re.jsx)("td",{role:"presentation",children:(0,re.jsx)(aa,{item:e,titleField:x?n:void 0,mediaField:_?i:void 0,descriptionField:y?a:void 0,isItemClickable:()=>!1})}),R.map(P=>{let{width:S,maxWidth:N,minWidth:M,align:I}=o.layout?.styles?.[P]??{};return(0,re.jsx)("td",{style:{width:S,maxWidth:N,minWidth:M},role:"presentation",children:(0,re.jsx)(mx,{fields:t,item:e,column:P,align:I})},P)})]},r)}function px({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:u,className:f,empty:d}){let m=(0,jt.useRef)(new Map),p=(0,jt.useRef)(),[g,b]=(0,jt.useState)(),x=pa(e)??!1;(0,jt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let _=(0,jt.useId)();if(g){p.current=g,b(void 0);return}let y=h=>{let C=m.current.get(h.id),F=C?m.current.get(C.fallback):void 0;b(F?.node)},E=!!t?.length,V=r.find(h=>h.id===u.titleField),A=r.find(h=>h.id===u.mediaField),R=r.find(h=>h.id===u.descriptionField),D=u.groupBy?.field?r.find(h=>h.id===u.groupBy?.field):null,P=D?Bt(t,D):null,{showTitle:S=!0,showMedia:N=!0,showDescription:M=!0}=u,I=V&&S||A&&N||R&&M,v=u.fields??[],w=(h,C)=>F=>{F?m.current.set(h,{node:F,fallback:v[C>0?C-1:1]}):m.current.delete(h)},T=u.infiniteScrollEnabled&&!P;return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsxs)("table",{className:q("dataviews-view-table","dataviews-view-picker-table",f,{[`has-${u.layout?.density}-density`]:u.layout?.density&&["compact","comfortable"].includes(u.layout.density)}),"aria-busy":n,"aria-describedby":_,role:T?"feed":"listbox",children:[(0,re.jsx)("thead",{role:"presentation",children:(0,re.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,re.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:x&&(0,re.jsx)(Dn,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),I&&(0,re.jsx)("th",{children:V&&(0,re.jsx)(Ko,{ref:w(V.id,0),fieldId:V.id,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:!1})}),v.map((h,C)=>{let{width:F,maxWidth:O,minWidth:W,align:U}=u.layout?.styles?.[h]??{};return(0,re.jsx)("th",{style:{width:F,maxWidth:O,minWidth:W,textAlign:U},"aria-sort":u.sort?.direction&&u.sort?.field===h?Qi[u.sort.direction]:void 0,scope:"col",children:(0,re.jsx)(Ko,{ref:w(h,C),fieldId:h,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:u.layout?.enableMoving??!0})},h)})]})}),E&&D&&P?Array.from(P.entries()).map(([h,C])=>(0,re.jsxs)(So.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,re.jsx)("tbody",{role:"group"}),children:[(0,re.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,re.jsx)("td",{colSpan:v.length+(I?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?h:(0,ga.sprintf)((0,ga.__)("%1$s: %2$s"),D.label,h)})}),C.map((F,O)=>(0,re.jsx)(pd,{item:F,fields:r,id:o(F)||O.toString(),view:u,titleField:V,mediaField:A,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:x},o(F)))]},`group-${h}`)):(0,re.jsx)(So.Composite,{render:(0,re.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:E&&t.map((h,C)=>(0,re.jsx)(pd,{item:h,fields:r,id:o(h)||C.toString(),view:u,titleField:V,mediaField:A,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:x,posinset:C+1},o(h)))})]}),(0,re.jsxs)("div",{className:q({"dataviews-loading":n,"dataviews-no-results":!E&&!n}),id:_,children:[!E&&(n?(0,re.jsx)("p",{children:(0,re.jsx)(So.Spinner,{})}):d),E&&n&&(0,re.jsx)("p",{className:"dataviews-loading-more",children:(0,re.jsx)(So.Spinner,{})})]})]})}var gd=px;var vd=c(K(),1),hd=c(X(),1),bd=c(z(),1);var xd=c(k(),1),gx=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function ou(){let e=(0,bd.useContext)($),t=e.view,r=gx.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,xd.jsx)(vd.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,hd.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var Jo=c(K(),1),en=c(X(),1),wd=c(z(),1);var tn=c(k(),1);function Hn(){let e=(0,wd.useContext)($),t=e.view;return(0,tn.jsxs)(Jo.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,en.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,tn.jsx)(Jo.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,en._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,tn.jsx)(Jo.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,en._x)("Balanced","Density option for DataView layout")},"balanced"),(0,tn.jsx)(Jo.__experimentalToggleGroupControlOption,{value:"compact",label:(0,en._x)("Compact","Density option for DataView layout")},"compact")]})}var eo=[{type:Go,label:(0,Sr.__)("Table"),component:Gf,icon:Ti,viewConfigOptions:Hn},{type:ea,label:(0,Sr.__)("Grid"),component:$f,icon:Ri,viewConfigOptions:ou},{type:hf,label:(0,Sr.__)("List"),component:Ql,icon:(0,Sr.isRTL)()?xl:yl,viewConfigOptions:Hn},{type:bf,label:(0,Sr.__)("Activity"),component:od,icon:Rl,viewConfigOptions:Hn},{type:xf,label:(0,Sr.__)("Grid"),component:md,icon:Ri,viewConfigOptions:ou,isPicker:!0},{type:wf,label:(0,Sr.__)("Table"),component:gd,icon:Ti,viewConfigOptions:Hn,isPicker:!0}];var hn=c(z(),1);var $t=c(K(),1),Rr=c(X(),1),Za=c(z(),1);var vx=Object.defineProperty,hx=Object.defineProperties,bx=Object.getOwnPropertyDescriptors,va=Object.getOwnPropertySymbols,_d=Object.prototype.hasOwnProperty,Sd=Object.prototype.propertyIsEnumerable,yd=(e,t,r)=>t in e?vx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))_d.call(t,r)&&yd(e,r,t[r]);if(va)for(var r of va(t))Sd.call(t,r)&&yd(e,r,t[r]);return e},Q=(e,t)=>hx(e,bx(t)),ae=(e,t)=>{var r={};for(var o in e)_d.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&va)for(var o of va(e))t.indexOf(o)<0&&Sd.call(e,o)&&(r[o]=e[o]);return r};var xx=Object.defineProperty,wx=Object.defineProperties,yx=Object.getOwnPropertyDescriptors,ha=Object.getOwnPropertySymbols,Pd=Object.prototype.hasOwnProperty,Ed=Object.prototype.propertyIsEnumerable,Cd=(e,t,r)=>t in e?xx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,se=(e,t)=>{for(var r in t||(t={}))Pd.call(t,r)&&Cd(e,r,t[r]);if(ha)for(var r of ha(t))Ed.call(t,r)&&Cd(e,r,t[r]);return e},He=(e,t)=>wx(e,yx(t)),ba=(e,t)=>{var r={};for(var o in e)Pd.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ha)for(var o of ha(e))t.indexOf(o)<0&&Ed.call(e,o)&&(r[o]=e[o]);return r};function zn(...e){}function nu(e,t){if(_x(e)){let r=Sx(t)?t():t;return e(r)}return e}function _x(e){return typeof e=="function"}function Sx(e){return typeof e=="function"}function It(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function to(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function Wn(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function iu(e,t){let r=se({},e);for(let o of t)It(r,o)&&delete r[o];return r}function au(e,t){let r={};for(let o of t)It(e,o)&&(r[o]=e[o]);return r}function Gn(e){return e}function nt(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function su(e){return Object.keys(e)}function lu(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function Co(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function it(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function oe(...e){for(let t of e)if(t!==void 0)return t}var Od=c(me(),1);function Ad(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function Cx(e){return!e||!(0,Od.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function Td(e){return Cx(e)?j({},e.props).ref||e.ref:null}function Id(e,t){let r=j({},e);for(let o in t){if(!It(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?j(j({},e[i]),t[i]):t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var ro=Px();function Px(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function Cr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function Po(e,t=!1){let{activeElement:r}=Cr(e);if(!r?.nodeName)return null;if(uu(r)&&r.contentDocument)return Po(r.contentDocument.body,t);if(t){let o=r.getAttribute("aria-activedescendant");if(o){let n=Cr(r).getElementById(o);if(n)return n}}return r}function tr(e,t){return e===t||e.contains(t)}function uu(e){return e.tagName==="IFRAME"}function Pr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?Ex.indexOf(e.type)!==-1:!1}var Ex=["button","color","file","image","reset","submit"];function cu(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function yt(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function Yn(e){return e.isContentEditable||yt(e)}function fu(e){if(yt(e))return e.value;if(e.isContentEditable){let t=Cr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function rn(e){let t=0,r=0;if(yt(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=Cr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&tr(e,o.anchorNode)&&o.focusNode&&tr(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function du(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function on(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return on(e.parentElement)||document.scrollingElement||document.body}function Un(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function mu(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),u=t(s);return l===u||!l||!u?0:Ox(l,u)?(n>a&&(o=!0),-1):(ni):e}function Ox(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function pu(){return ro&&!!navigator.maxTouchPoints}function xa(){return ro?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Eo(){return ro&&xa()&&/apple/i.test(navigator.vendor)}function gu(){return ro&&/firefox\//i.test(navigator.userAgent)}function wa(e){return!!(e.currentTarget&&!tr(e.currentTarget,e.target))}function mt(e){return e.target===e.currentTarget}function Rd(e){let t=e.currentTarget;if(!t)return!1;let r=xa();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function Vd(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function Oo(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n=He(se({},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",n)),o}function kd(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function vu(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function ya(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!tr(r,o)}function oo(e,t,r,o){let i=(s=>{if(o){let u=setTimeout(s,o);return()=>clearTimeout(u)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function rr(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(rr(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var be=c(me(),1),Ax=c(me(),1),hu=j({},Ax),Nd=hu.useId,HE=hu.useDeferredValue,Dd=hu.useInsertionEffect,Ne=ro?be.useLayoutEffect:be.useEffect;function Tx(e){let[t]=(0,be.useState)(e);return t}function Ld(e){let t=(0,be.useRef)(e);return Ne(()=>{t.current=e}),t}function ne(e){let t=(0,be.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return Dd?Dd(()=>{t.current=e}):t.current=e,(0,be.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function Bd(e){let[t,r]=(0,be.useState)(null);return Ne(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function De(...e){return(0,be.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)Ad(r,t)}},e)}function Ht(e){if(Nd){let o=Nd();return e||o}let[t,r]=(0,be.useState)(e);return Ne(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function jd(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,be.useState)(()=>r(t));return Ne(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function Hd(e,t,r){let o=Tx(r),[n,i]=(0,be.useState)(o);return(0,be.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let u=a.getAttribute(t);i(u??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function or(e,t){let r=(0,be.useRef)(!1);(0,be.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,be.useEffect)(()=>()=>{r.current=!1},[])}function zd(e,t){let r=(0,be.useRef)(!1);Ne(()=>{if(r.current)return e();r.current=!0},t),Ne(()=>()=>{r.current=!1},[])}function Wd(){return(0,be.useReducer)(()=>[],[])}function ze(e){return ne(typeof e=="function"?e:()=>e)}function nr(e,t,r=[]){let o=(0,be.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return Q(j({},e),{wrapElement:o})}function Gd(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,be.useMemo)(()=>Object.assign(()=>{},Q(j({},o),{[t]:r})),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}function Yd(){return(0,be.useEffect)(()=>{rr("mousemove",Rx,!0),rr("mousedown",_a,!0),rr("mouseup",_a,!0),rr("keydown",_a,!0),rr("scroll",_a,!0)},[]),ne(()=>bu)}var bu=!1,Md=0,Fd=0;function Ix(e){let t=e.movementX||e.screenX-Md,r=e.movementY||e.screenY-Fd;return Md=e.screenX,Fd=e.screenY,t||r||!1}function Rx(e){Ix(e)&&(bu=!0)}function _a(){bu=!1}var _t=c(me(),1),Ao=c(k(),1);function xe(e){let t=_t.forwardRef((r,o)=>e(Q(j({},r),{ref:o})));return t.displayName=e.displayName||e.name,t}function no(e,t){return _t.memo(e,t)}function _e(e,t){let r=t,{wrapElement:o,render:n}=r,i=ae(r,["wrapElement","render"]),a=De(t.ref,Td(n)),s;if(_t.isValidElement(n)){let l=Q(j({},n.props),{ref:a});s=_t.cloneElement(n,Id(i,l))}else n?s=n(i):s=(0,Ao.jsx)(e,j({},i));return o?o(s):s}function Se(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function Rt(e=[],t=[]){let r=_t.createContext(void 0),o=_t.createContext(void 0),n=()=>_t.useContext(r),i=(u=!1)=>{let f=_t.useContext(o),d=n();return u?f:f||d},a=()=>{let u=_t.useContext(o),f=n();if(!(u&&u===f))return f},s=u=>e.reduceRight((f,d)=>(0,Ao.jsx)(d,Q(j({},u),{children:f})),(0,Ao.jsx)(r.Provider,j({},u)));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:u=>(0,Ao.jsx)(s,Q(j({},u),{children:t.reduceRight((f,d)=>(0,Ao.jsx)(d,Q(j({},u),{children:f})),(0,Ao.jsx)(o.Provider,j({},u)))}))}}var qn=Rt(),Ud=qn.useContext,$E=qn.useScopedContext,KE=qn.useProviderContext,qd=qn.ContextProvider,$d=qn.ScopedContextProvider;var xu=c(me(),1),$n=Rt([qd],[$d]),Sa=$n.useContext,JE=$n.useScopedContext,Kd=$n.useProviderContext,nn=$n.ContextProvider,Ca=$n.ScopedContextProvider,Xd=(0,xu.createContext)(void 0),Zd=(0,xu.createContext)(void 0);var wu=c(me(),1),o2=(0,wu.createContext)(null),n2=(0,wu.createContext)(null),Kn=Rt([nn],[Ca]),Qd=Kn.useContext,i2=Kn.useScopedContext,a2=Kn.useProviderContext,s2=Kn.ContextProvider,l2=Kn.ScopedContextProvider;function To(e,t){let r=e.__unstableInternals;return nt(r,"Invalid store"),r[t]}function St(e,...t){let r=e,o=r,n=Symbol(),i=zn,a=new Set,s=new Set,l=new Set,u=new Set,f=new Set,d=new WeakMap,m=new WeakMap,p=P=>(l.add(P),()=>l.delete(P)),g=()=>{let P=a.size,S=Symbol();a.add(S);let N=()=>{a.delete(S),!a.size&&i()};if(P)return N;let M=su(r).map(w=>to(...t.map(T=>{var h;let C=(h=T?.getState)==null?void 0:h.call(T);if(C&&It(C,w))return tt(T,[w],F=>{R(w,F[w],!0)})}))),I=[];for(let w of l)I.push(w());let v=t.map(an);return i=to(...M,...I,...v),N},b=(P,S,N=u)=>(N.add(S),m.set(S,P),()=>{var M;(M=d.get(S))==null||M(),d.delete(S),m.delete(S),N.delete(S)}),x=(P,S)=>b(P,S),_=(P,S)=>(d.set(S,S(r,r)),b(P,S)),y=(P,S)=>(d.set(S,S(r,o)),b(P,S,f)),E=P=>St(au(r,P),D),V=P=>St(iu(r,P),D),A=()=>r,R=(P,S,N=!1)=>{var M;if(!It(r,P))return;let I=nu(S,r[P]);if(I===r[P])return;if(!N)for(let h of t)(M=h?.setState)==null||M.call(h,P,I);let v=r;r=He(se({},r),{[P]:I});let w=Symbol();n=w,s.add(P);let T=(h,C,F)=>{var O;let W=m.get(h),U=Ze=>F?F.has(Ze):Ze===P;(!W||W.some(U))&&((O=d.get(h))==null||O(),d.set(h,h(r,C)))};for(let h of u)T(h,v);queueMicrotask(()=>{if(n!==w)return;let h=r;for(let C of f)T(C,o,s);o=h,s.clear()})},D={getState:A,setState:R,__unstableInternals:{setup:p,init:g,subscribe:x,sync:_,batch:y,pick:E,omit:V}};return D}function et(e,...t){if(e)return To(e,"setup")(...t)}function an(e,...t){if(e)return To(e,"init")(...t)}function sn(e,...t){if(e)return To(e,"subscribe")(...t)}function tt(e,...t){if(e)return To(e,"sync")(...t)}function io(e,...t){if(e)return To(e,"batch")(...t)}function Xn(e,...t){if(e)return To(e,"omit")(...t)}function yu(e,...t){if(e)return To(e,"pick")(...t)}function Io(...e){let t=e.reduce((o,n)=>{var i;let a=(i=n?.getState)==null?void 0:i.call(n);return a?Object.assign(o,a):o},{}),r=St(t,...e);return Object.assign({},...e,r)}var ir=c(me(),1),Jd=c(lf(),1),{useSyncExternalStore:em}=Jd.default,tm=()=>()=>{};function ln(e,t=Gn){let r=ir.useCallback(n=>e?sn(e,null,n):tm(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&It(a,n))return a[n]};return em(r,o,o)}function Ea(e,t){let r=ir.useRef({}),o=ir.useCallback(i=>e?sn(e,null,i):tm(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let u=t[l];if(typeof u=="function"){let f=u(i);f!==s[l]&&(s[l]=f,a=!0)}if(typeof u=="string"){if(!i||!It(i,u))continue;let f=i[u];f!==s[l]&&(s[l]=f,a=!0)}}return a&&(r.current=j({},s)),r.current};return em(o,n,n)}function Me(e,t,r,o){let n=It(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=Ld({value:n,setValue:i});Ne(()=>tt(e,[r],(s,l)=>{let{value:u,setValue:f}=a.current;f&&s[r]!==l[r]&&s[r]!==u&&f(s[r])}),[e,r]),Ne(()=>{if(n!==void 0)return e.setState(r,n),io(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function un(e,t){let[r,o]=ir.useState(()=>e(t));Ne(()=>an(r),[r]);let n=ir.useCallback(s=>ln(r,s),[r]),i=ir.useMemo(()=>Q(j({},r),{useState:n}),[r,n]),a=ne(()=>{o(s=>e(j(j({},t),s.getState())))});return[i,a]}function Vx(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Cr(n).body}function kx(e){return e?.__unstablePrivateStore}function rm(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=oe(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:oe(r?.renderedItems,[])},a=kx(e.store),s=St({items:o,renderedItems:i.renderedItems},a),l=St(i,e.store),u=m=>{let p=mu(m,g=>g.element);s.setState("renderedItems",p),l.setState("renderedItems",p)};et(l,()=>an(s)),et(s,()=>io(s,["items"],m=>{l.setState("items",m.items)})),et(s,()=>io(s,["renderedItems"],m=>{let p=!0,g=requestAnimationFrame(()=>{let{renderedItems:y}=l.getState();m.renderedItems!==y&&u(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(g);let b=()=>{if(p){p=!1;return}cancelAnimationFrame(g),g=requestAnimationFrame(()=>u(m.renderedItems))},x=Vx(m.renderedItems),_=new IntersectionObserver(b,{root:x});for(let y of m.renderedItems)y.element&&_.observe(y.element);return()=>{cancelAnimationFrame(g),_.disconnect()}}));let f=(m,p,g=!1)=>{let b;return p(_=>{let y=_.findIndex(({id:V})=>V===m.id),E=_.slice();if(y!==-1){b=_[y];let V=se(se({},b),m);E[y]=V,n.set(m.id,V)}else E.push(m),n.set(m.id,m);return E}),()=>{p(_=>{if(!b)return g&&n.delete(m.id),_.filter(({id:V})=>V!==m.id);let y=_.findIndex(({id:V})=>V===m.id);if(y===-1)return _;let E=_.slice();return E[y]=b,n.set(m.id,b),E})}},d=m=>f(m,p=>s.setState("items",p),!0);return He(se({},l),{registerItem:d,renderItem:m=>to(d(m),f(m,p=>s.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:g}=s.getState();p=g.find(b=>b.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:s})}function om(e,t,r){return or(t,[r.store]),Me(e,r,"items","setItems"),e}function _u(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function Zn(e){let t=[];for(let r of e)t.push(...r);return t}function cn(e){return e.slice().reverse()}var Nx={id:null};function Er(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function Dx(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function nm(e,t){return e.filter(r=>r.rowId===t)}function Mx(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[Nx]:[],...e.slice(0,o)]}function im(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function am(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function Fx(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function Lx(e,t,r){let o=am(e);for(let n of e)for(let i=0;itt(a,["renderedItems","activeId"],l=>{a.setState("activeId",u=>{var f;return u!==void 0?u:(f=Er(l.renderedItems))==null?void 0:f.id})}));let s=(l="next",u={})=>{var f,d;let m=a.getState(),{skip:p=0,activeId:g=m.activeId,focusShift:b=m.focusShift,focusLoop:x=m.focusLoop,focusWrap:_=m.focusWrap,includesBaseElement:y=m.includesBaseElement,renderedItems:E=m.renderedItems,rtl:V=m.rtl}=u,A=l==="up"||l==="down",R=l==="next"||l==="down",D=R?V&&!A:!V||A,P=b&&!p,S=A?Zn(Lx(im(E),g,P)):E;if(S=D?cn(S):S,S=A?Bx(S):S,g==null)return(f=Er(S))==null?void 0:f.id;let N=S.find(O=>O.id===g);if(!N)return(d=Er(S))==null?void 0:d.id;let M=S.some(O=>O.rowId),I=S.indexOf(N),v=S.slice(I+1),w=nm(v,N.rowId);if(p){let O=Dx(w,g),W=O.slice(p)[0]||O[O.length-1];return W?.id}let T=x&&(A?x!=="horizontal":x!=="vertical"),h=M&&_&&(A?_!=="horizontal":_!=="vertical"),C=R?(!M||A)&&T&&y:A?y:!1;if(T){let O=h&&!C?S:nm(S,N.rowId),W=Mx(O,g,C),U=Er(W,g);return U?.id}if(h){let O=Er(C?w:v,g);return C?O?.id||null:O?.id}let F=Er(w,g);return!F&&C?null:F?.id};return He(se(se({},o),a),{setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",u=>u+1))},first:()=>{var l;return(l=Er(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=Er(cn(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))})}function lm(e){let t=Ht(e.id);return j({id:t},e)}function um(e,t,r){return e=om(e,t,r),Me(e,r,"activeId","setActiveId"),Me(e,r,"includesBaseElement"),Me(e,r,"virtualFocus"),Me(e,r,"orientation"),Me(e,r,"rtl"),Me(e,r,"focusLoop"),Me(e,r,"focusWrap"),Me(e,r,"focusShift"),e}function cm(e={}){let t=Io(e.store,Xn(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=oe(e.open,r?.open,e.defaultOpen,!1),n=oe(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:oe(r?.contentElement,null),disclosureElement:oe(r?.disclosureElement,null)},a=St(i,t);return et(a,()=>tt(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),et(a,()=>sn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),et(a,()=>tt(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),He(se({},a),{disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)})}function fm(e,t,r){return or(t,[r.store,r.disclosure]),Me(e,r,"open","setOpen"),Me(e,r,"mounted","setMounted"),Me(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}function dm(e={}){return cm(e)}function mm(e,t,r){return fm(e,t,r)}function pm(e={}){var t=e,{popover:r}=t,o=ba(t,["popover"]);let n=Io(o.store,Xn(r,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let i=n?.getState(),a=dm(He(se({},o),{store:n})),s=oe(o.placement,i?.placement,"bottom"),l=He(se({},a.getState()),{placement:s,currentPlacement:s,anchorElement:oe(i?.anchorElement,null),popoverElement:oe(i?.popoverElement,null),arrowElement:oe(i?.arrowElement,null),rendered:Symbol("rendered")}),u=St(l,a,n);return He(se(se({},a),u),{setAnchorElement:f=>u.setState("anchorElement",f),setPopoverElement:f=>u.setState("popoverElement",f),setArrowElement:f=>u.setState("arrowElement",f),render:()=>u.setState("rendered",Symbol("rendered"))})}function gm(e,t,r){return or(t,[r.popover]),Me(e,r,"placement"),mm(e,t,r)}var jx=Eo()&&pu();function vm(e={}){var t=e,{tag:r}=t,o=ba(t,["tag"]);let n=Io(o.store,yu(r,["value","rtl"]));let i=r?.getState(),a=n?.getState(),s=oe(o.activeId,a?.activeId,o.defaultActiveId,null),l=sm(He(se({},o),{activeId:s,includesBaseElement:oe(o.includesBaseElement,a?.includesBaseElement,!0),orientation:oe(o.orientation,a?.orientation,"vertical"),focusLoop:oe(o.focusLoop,a?.focusLoop,!0),focusWrap:oe(o.focusWrap,a?.focusWrap,!0),virtualFocus:oe(o.virtualFocus,a?.virtualFocus,!0)})),u=pm(He(se({},o),{placement:oe(o.placement,a?.placement,"bottom-start")})),f=oe(o.value,a?.value,o.defaultValue,""),d=oe(o.selectedValue,a?.selectedValue,i?.values,o.defaultSelectedValue,""),m=Array.isArray(d),p=He(se(se({},l.getState()),u.getState()),{value:f,selectedValue:d,resetValueOnSelect:oe(o.resetValueOnSelect,a?.resetValueOnSelect,m),resetValueOnHide:oe(o.resetValueOnHide,a?.resetValueOnHide,m&&!r),activeValue:a?.activeValue}),g=St(p,l,u,n);return jx&&et(g,()=>tt(g,["virtualFocus"],()=>{g.setState("virtualFocus",!1)})),et(g,()=>{if(r)return to(tt(g,["selectedValue"],b=>{Array.isArray(b.selectedValue)&&r.setValues(b.selectedValue)}),tt(r,["values"],b=>{g.setState("selectedValue",b.values)}))}),et(g,()=>tt(g,["resetValueOnHide","mounted"],b=>{b.resetValueOnHide&&(b.mounted||g.setState("value",f))})),et(g,()=>tt(g,["open"],b=>{b.open||(g.setState("activeId",s),g.setState("moves",0))})),et(g,()=>tt(g,["moves","activeId"],(b,x)=>{b.moves===x.moves&&g.setState("activeValue",void 0)})),et(g,()=>io(g,["moves","renderedItems"],(b,x)=>{if(b.moves===x.moves)return;let{activeId:_}=g.getState(),y=l.item(_);g.setState("activeValue",y?.value)})),He(se(se(se({},u),l),g),{tag:r,setValue:b=>g.setState("value",b),resetValue:()=>g.setState("value",p.value),setSelectedValue:b=>g.setState("selectedValue",b)})}function zx(e){let t=Qd();return e=Q(j({},e),{tag:e.tag!==void 0?e.tag:t}),lm(e)}function Wx(e,t,r){return or(t,[r.tag]),Me(e,r,"value","setValue"),Me(e,r,"selectedValue","setSelectedValue"),Me(e,r,"resetValueOnHide"),Me(e,r,"resetValueOnSelect"),Object.assign(um(gm(e,t,r),t,r),{tag:r.tag})}function Su(e={}){e=zx(e);let[t,r]=un(vm,e);return Wx(t,r,e)}var Qn=Rt(),wO=Qn.useContext,yO=Qn.useScopedContext,Cu=Qn.useProviderContext,hm=Qn.ContextProvider,bm=Qn.ScopedContextProvider;var Pu=c(me(),1),Jn=Rt([hm],[bm]),PO=Jn.useContext,EO=Jn.useScopedContext,OO=Jn.useProviderContext,xm=Jn.ContextProvider,Oa=Jn.ScopedContextProvider,AO=(0,Pu.createContext)(void 0),TO=(0,Pu.createContext)(void 0);var ei=Rt([xm],[Oa]),kO=ei.useContext,NO=ei.useScopedContext,wm=ei.useProviderContext,ym=ei.ContextProvider,_m=ei.ScopedContextProvider;var Aa=c(me(),1),Ta=(0,Aa.createContext)(void 0),ti=Rt([ym,nn],[_m,Ca]),Eu=ti.useContext,fn=ti.useScopedContext,Ia=ti.useProviderContext,Sm=ti.ContextProvider,Cm=ti.ScopedContextProvider,Ra=(0,Aa.createContext)(void 0),Pm=(0,Aa.createContext)(!1);var Gx="div",Ou=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=wm();return o=o||i,n=Q(j({},n),{ref:De(o?.setAnchorElement,n.ref)}),n}),GO=xe(function(t){let r=Ou(t);return _e(Gx,r)});function Em(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function ar(e,t){return t&&e.item(t)||null}function Om(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Am(e,t=!1){if(yt(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=Cr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var Au=Symbol("FOCUS_SILENTLY");function Tm(e){e[Au]=!0,e.focus({preventScroll:!0})}function Im(e){let t=e[Au];return delete e[Au],t}function Ro(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var Rm=c(me(),1),Vm=(0,Rm.createContext)(!0);var km="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function ri(e){return!(!e.matches(km)||!cu(e)||e.closest("[inert]"))}function Nm(e){for(;e&&!ri(e);)e=e.closest(km);return e||null}function zt(e){let t=Po(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function Tu(e){let t=Po(e);if(!t)return!1;if(tr(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function Dm(e){!Tu(e)&&ri(e)&&e.focus()}function Mm(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(se({block:"nearest",inline:"nearest"},t))):e.focus()}var Mt=c(me(),1),Yx="div",Fm=Eo(),Ux=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],qx=Symbol("safariFocusAncestor");function Lm(e,t){e&&(e[qx]=t)}function $x(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?Ux.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function Kx(e){return"labels"in e?e.labels:null}function Bm(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function Xx(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function Zx(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function Qx(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function Iu(e,t){return ne(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var Ru=!0;function Jx(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(Ru=!1))}function ew(e){e.metaKey||e.ctrlKey||e.altKey||(Ru=!0)}var oi=Se(function(t){var r=t,{focusable:o=!0,accessibleWhenDisabled:n,autoFocus:i,onFocusVisible:a}=r,s=ae(r,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);let l=(0,Mt.useRef)(null);(0,Mt.useEffect)(()=>{o&&(rr("mousedown",Jx,!0),rr("keydown",ew,!0))},[o]),Fm&&(0,Mt.useEffect)(()=>{if(!o)return;let h=l.current;if(!h||!Bm(h))return;let C=Kx(h);if(!C)return;let F=()=>queueMicrotask(()=>h.focus());for(let O of C)O.addEventListener("mouseup",F);return()=>{for(let O of C)O.removeEventListener("mouseup",F)}},[o]);let u=o&&Co(s),f=!!u&&!n,[d,m]=(0,Mt.useState)(!1);(0,Mt.useEffect)(()=>{o&&f&&d&&m(!1)},[o,f,d]),(0,Mt.useEffect)(()=>{if(!o||!d)return;let h=l.current;if(!h||typeof IntersectionObserver>"u")return;let C=new IntersectionObserver(()=>{ri(h)||m(!1)});return C.observe(h),()=>C.disconnect()},[o,d]);let p=Iu(s.onKeyPressCapture,u),g=Iu(s.onMouseDownCapture,u),b=Iu(s.onClickCapture,u),x=s.onMouseDown,_=ne(h=>{if(x?.(h),h.defaultPrevented||!o)return;let C=h.currentTarget;if(!Fm||wa(h)||!Pr(C)&&!Bm(C))return;let F=!1,O=()=>{F=!0},W={capture:!0,once:!0};C.addEventListener("focusin",O,W);let U=Nm(C.parentElement);Lm(U,!0),oo(C,"mouseup",()=>{C.removeEventListener("focusin",O,!0),Lm(U,!1),!F&&Dm(C)})}),y=(h,C)=>{if(C&&(h.currentTarget=C),!o)return;let F=h.currentTarget;F&&zt(F)&&(a?.(h),!h.defaultPrevented&&(F.dataset.focusVisible="true",m(!0)))},E=s.onKeyDownCapture,V=ne(h=>{if(E?.(h),h.defaultPrevented||!o||d||h.metaKey||h.altKey||h.ctrlKey||!mt(h))return;let C=h.currentTarget;oo(C,"focusout",()=>y(h,C))}),A=s.onFocusCapture,R=ne(h=>{if(A?.(h),h.defaultPrevented||!o)return;if(!mt(h)){m(!1);return}let C=h.currentTarget,F=()=>y(h,C);Ru||$x(h.target)?oo(h.target,"focusout",F):m(!1)}),D=s.onBlur,P=ne(h=>{D?.(h),o&&ya(h)&&m(!1)}),S=(0,Mt.useContext)(Vm),N=ne(h=>{o&&i&&h&&S&&queueMicrotask(()=>{zt(h)||ri(h)&&h.focus()})}),M=jd(l),I=o&&Xx(M),v=o&&Zx(M),w=s.style,T=(0,Mt.useMemo)(()=>f?j({pointerEvents:"none"},w):w,[f,w]);return s=Q(j({"data-focus-visible":o&&d||void 0,"data-autofocus":i||void 0,"aria-disabled":u||void 0},s),{ref:De(l,N,s.ref),style:T,tabIndex:Qx(o,f,I,v,s.tabIndex),disabled:v&&f?!0:void 0,contentEditable:u?void 0:s.contentEditable,onKeyPressCapture:p,onClickCapture:b,onMouseDownCapture:g,onMouseDown:_,onKeyDownCapture:V,onFocusCapture:R,onBlur:P}),it(s)}),cA=xe(function(t){let r=oi(t);return _e(Yx,r)});var sr=c(me(),1),Hm=c(k(),1),tw="div";function rw(e){return e.some(t=>!!t.rowId)}function ow(e){let t=e.target;return t&&!yt(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function nw(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function jm(e,t,r){return ne(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!mt(o)||nw(o)||ow(o))return;let i=e.getState(),a=(n=ar(e,i.activeId))==null?void 0:n.element;if(!a)return;let s=o,{view:l}=s,u=ae(s,["view"]),f=r?.current;a!==f&&a.focus(),kd(a,o.type,u)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function iw(e){return Em(Zn(cn(Om(e))))}function aw(e){let[t,r]=(0,sr.useState)(!1),o=(0,sr.useCallback)(()=>r(!0),[]),n=e.useState(i=>ar(e,i.activeId));return(0,sr.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var Vu=Se(function(t){var r=t,{store:o,composite:n=!0,focusOnMove:i=n,moveOnKeyPress:a=!0}=r,s=ae(r,["store","composite","focusOnMove","moveOnKeyPress"]);let l=Kd();o=o||l,nt(o,!1);let u=(0,sr.useRef)(null),f=(0,sr.useRef)(null),d=aw(o),m=o.useState("moves"),[,p]=Bd(n?o.setBaseElement:null);(0,sr.useEffect)(()=>{var v;if(!o||!m||!n||!i)return;let{activeId:w}=o.getState(),T=(v=ar(o,w))==null?void 0:v.element;T&&Mm(T)},[o,m,n,i]),Ne(()=>{if(!o||!m||!n)return;let{baseElement:v,activeId:w}=o.getState();if(!(w===null)||!v)return;let h=f.current;f.current=null,h&&Oo(h,{relatedTarget:v}),zt(v)||v.focus()},[o,m,n]);let g=o.useState("activeId"),b=o.useState("virtualFocus");Ne(()=>{var v;if(!o||!n||!b)return;let w=f.current;if(f.current=null,!w)return;let h=((v=ar(o,g))==null?void 0:v.element)||Po(w);h!==w&&Oo(w,{relatedTarget:h})},[o,g,b,n]);let x=jm(o,s.onKeyDownCapture,f),_=jm(o,s.onKeyUpCapture,f),y=s.onFocusCapture,E=ne(v=>{if(y?.(v),v.defaultPrevented||!o)return;let{virtualFocus:w}=o.getState();if(!w)return;let T=v.relatedTarget,h=Im(v.currentTarget);mt(v)&&h&&(v.stopPropagation(),f.current=T)}),V=s.onFocus,A=ne(v=>{if(V?.(v),v.defaultPrevented||!n||!o)return;let{relatedTarget:w}=v,{virtualFocus:T}=o.getState();T?mt(v)&&!Ro(o,w)&&queueMicrotask(d):mt(v)&&o.setActiveId(null)}),R=s.onBlurCapture,D=ne(v=>{var w;if(R?.(v),v.defaultPrevented||!o)return;let{virtualFocus:T,activeId:h}=o.getState();if(!T)return;let C=(w=ar(o,h))==null?void 0:w.element,F=v.relatedTarget,O=Ro(o,F),W=f.current;f.current=null,mt(v)&&O?(F===C?W&&W!==F&&Oo(W,v):C?Oo(C,v):W&&Oo(W,v),v.stopPropagation()):!Ro(o,v.target)&&C&&Oo(C,v)}),P=s.onKeyDown,S=ze(a),N=ne(v=>{var w;if(P?.(v),v.defaultPrevented||!o||!mt(v))return;let{orientation:T,renderedItems:h,activeId:C}=o.getState(),F=ar(o,C);if((w=F?.element)!=null&&w.isConnected)return;let O=T!=="horizontal",W=T!=="vertical",U=rw(h);if((v.key==="ArrowLeft"||v.key==="ArrowRight"||v.key==="Home"||v.key==="End")&&yt(v.currentTarget))return;let Ee={ArrowUp:(U||O)&&(()=>{if(U){let Y=iw(h);return Y?.id}return o?.last()}),ArrowRight:(U||W)&&o.first,ArrowDown:(U||O)&&o.first,ArrowLeft:(U||W)&&o.last,Home:o.first,End:o.last,PageUp:o.first,PageDown:o.last}[v.key];if(Ee){let Y=Ee();if(Y!==void 0){if(!S(v))return;v.preventDefault(),o.move(Y)}}});s=nr(s,v=>(0,Hm.jsx)(nn,{value:o,children:v}),[o]);let M=o.useState(v=>{var w;if(o&&n&&v.virtualFocus)return(w=ar(o,v.activeId))==null?void 0:w.id});s=Q(j({"aria-activedescendant":M},s),{ref:De(u,p,s.ref),onKeyDownCapture:x,onKeyUpCapture:_,onFocusCapture:E,onFocus:A,onBlurCapture:D,onKeyDown:N});let I=o.useState(v=>n&&(v.virtualFocus||v.activeId===null));return s=oi(j({focusable:I},s)),s}),EA=xe(function(t){let r=Vu(t);return _e(tw,r)});var at=c(me(),1),sw="input";function zm(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Wm(e,t){return!t||e==null?!1:(e=Wn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function lw(e){return e.type==="input"}function uw(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function cw(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var fw=Se(function(t){var r=t,{store:o,focusable:n=!0,autoSelect:i=!1,getAutoSelectId:a,setValueOnChange:s,showMinLength:l=0,showOnChange:u,showOnMouseDown:f,showOnClick:d=f,showOnKeyDown:m,showOnKeyPress:p=m,blurActiveItemOnClick:g,setValueOnClick:b=!0,moveOnKeyPress:x=!0,autoComplete:_="list"}=r,y=ae(r,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);let E=Ia();o=o||E,nt(o,!1);let V=(0,at.useRef)(null),[A,R]=Wd(),D=(0,at.useRef)(!1),P=(0,at.useRef)(!1),S=o.useState(B=>B.virtualFocus&&i),N=_==="inline"||_==="both",[M,I]=(0,at.useState)(N);zd(()=>{N&&I(!0)},[N]);let v=o.useState("value"),w=(0,at.useRef)();(0,at.useEffect)(()=>tt(o,["selectedValue","activeId"],(B,fe)=>{w.current=fe.selectedValue}),[]);let T=o.useState(B=>{var fe;if(N&&M&&!(B.activeValue&&Array.isArray(B.selectedValue)&&(B.selectedValue.includes(B.activeValue)||(fe=w.current)!=null&&fe.includes(B.activeValue))))return B.activeValue}),h=o.useState("renderedItems"),C=o.useState("open"),F=o.useState("contentElement"),O=(0,at.useMemo)(()=>{if(!N||!M)return v;if(zm(h,T,S)){if(Wm(v,T)){let fe=T?.slice(v.length)||"";return v+fe}return v}return T||v},[N,M,h,T,S,v]);(0,at.useEffect)(()=>{let B=V.current;if(!B)return;let fe=()=>I(!0);return B.addEventListener("combobox-item-move",fe),()=>{B.removeEventListener("combobox-item-move",fe)}},[]),(0,at.useEffect)(()=>{if(!N||!M||!T||!zm(h,T,S)||!Wm(v,T))return;let fe=zn;return queueMicrotask(()=>{let Ye=V.current;if(!Ye)return;let{start:Ue,end:Lt}=rn(Ye),xr=v.length,ct=T.length;Un(Ye,xr,ct),fe=()=>{if(!zt(Ye))return;let{start:ho,end:tb}=rn(Ye);ho===xr&&tb===ct&&Un(Ye,Ue,Lt)}}),()=>fe()},[A,N,M,T,h,S,v]);let W=(0,at.useRef)(null),U=ne(a),Ze=(0,at.useRef)(null);(0,at.useEffect)(()=>{if(!C||!F)return;let B=on(F);if(!B)return;W.current=B;let fe=()=>{D.current=!1},Ye=()=>{if(!o||!D.current)return;let{activeId:Lt}=o.getState();Lt!==null&&Lt!==Ze.current&&(D.current=!1)},Ue={passive:!0,capture:!0};return B.addEventListener("wheel",fe,Ue),B.addEventListener("touchmove",fe,Ue),B.addEventListener("scroll",Ye,Ue),()=>{B.removeEventListener("wheel",fe,!0),B.removeEventListener("touchmove",fe,!0),B.removeEventListener("scroll",Ye,!0)}},[C,F,o]),Ne(()=>{v&&(P.current||(D.current=!0))},[v]),Ne(()=>{S!=="always"&&C||(D.current=C)},[S,C]);let ot=o.useState("resetValueOnSelect");or(()=>{var B,fe;let Ye=D.current;if(!o||!C||!Ye&&!ot)return;let{baseElement:Ue,contentElement:Lt,activeId:xr}=o.getState();if(!(Ue&&!zt(Ue))){if(Lt?.hasAttribute("data-placing")){let ct=new MutationObserver(R);return ct.observe(Lt,{attributeFilter:["data-placing"]}),()=>ct.disconnect()}if(S&&Ye){let ct=U(h),ho=ct!==void 0?ct:(B=cw(h))!=null?B:o.first();Ze.current=ho,o.move(ho??null)}else{let ct=(fe=o.item(xr||o.first()))==null?void 0:fe.element;ct&&"scrollIntoView"in ct&&ct.scrollIntoView({block:"nearest",inline:"nearest"})}}},[o,C,A,v,S,ot,U,h]),(0,at.useEffect)(()=>{if(!N)return;let B=V.current;if(!B)return;let fe=[B,F].filter(Ue=>!!Ue),Ye=Ue=>{fe.every(Lt=>ya(Ue,Lt))&&o?.setValue(O)};for(let Ue of fe)Ue.addEventListener("focusout",Ye);return()=>{for(let Ue of fe)Ue.removeEventListener("focusout",Ye)}},[N,F,o,O]);let de=B=>B.currentTarget.value.length>=l,Ee=y.onChange,Y=ze(u??de),Ie=ze(s??!o.tag),Qe=ne(B=>{if(Ee?.(B),B.defaultPrevented||!o)return;let fe=B.currentTarget,{value:Ye,selectionStart:Ue,selectionEnd:Lt}=fe,xr=B.nativeEvent;if(D.current=!0,lw(xr)&&(xr.isComposing&&(D.current=!1,P.current=!0),N)){let ct=xr.inputType==="insertText"||xr.inputType==="insertCompositionText",ho=Ue===Ye.length;I(ct&&ho)}if(Ie(B)){let ct=Ye===o.getState().value;o.setValue(Ye),queueMicrotask(()=>{Un(fe,Ue,Lt)}),N&&S&&ct&&R()}Y(B)&&o.show(),(!S||!D.current)&&o.setActiveId(null)}),Ut=y.onCompositionEnd,Mr=ne(B=>{D.current=!0,P.current=!1,Ut?.(B),!B.defaultPrevented&&S&&R()}),zo=y.onMouseDown,vo=ze(g??(()=>!!o?.getState().includesBaseElement)),Ls=ze(b),Bs=ze(d??de),js=ne(B=>{zo?.(B),!B.defaultPrevented&&(B.button||B.ctrlKey||o&&(vo(B)&&o.setActiveId(null),Ls(B)&&o.setValue(O),Bs(B)&&oo(B.currentTarget,"mouseup",o.show)))}),Rc=y.onKeyDown,Kh=ze(p??de),Xh=ne(B=>{if(Rc?.(B),B.repeat||(D.current=!1),B.defaultPrevented||B.ctrlKey||B.altKey||B.shiftKey||B.metaKey||!o)return;let{open:fe}=o.getState();fe||(B.key==="ArrowUp"||B.key==="ArrowDown")&&Kh(B)&&(B.preventDefault(),o.show())}),Vc=y.onBlur,Zh=ne(B=>{D.current=!1,Vc?.(B),B.defaultPrevented}),Qh=Ht(y.id),Jh=uw(_)?_:void 0,eb=o.useState(B=>B.activeId===null);return y=Q(j({id:Qh,role:"combobox","aria-autocomplete":Jh,"aria-haspopup":du(F,"listbox"),"aria-expanded":C,"aria-controls":F?.id,"data-active-item":eb||void 0,value:O},y),{ref:De(V,y.ref),onChange:Qe,onCompositionEnd:Mr,onMouseDown:js,onKeyDown:Xh,onBlur:Zh}),y=Vu(Q(j({store:o,focusable:n},y),{moveOnKeyPress:B=>lu(x,B)?!1:(N&&I(!0),!0)})),y=Ou(j({store:o},y)),j({autoComplete:"off"},y)}),Va=xe(function(t){let r=fw(t);return _e(sw,r)});var Gm=c(k(),1);function ka(e={}){let t=Su(e);return(0,Gm.jsx)(Sm,{value:t,children:e.children})}var ao=c(me(),1),dw="button";function Ym(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?Pr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?Pr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var mw=Symbol("command"),ku=Se(function(t){var r=t,{clickOnEnter:o=!0,clickOnSpace:n=!0}=r,i=ae(r,["clickOnEnter","clickOnSpace"]);let a=(0,ao.useRef)(null),[s,l]=(0,ao.useState)(!1);(0,ao.useEffect)(()=>{a.current&&l(Pr(a.current))},[]);let[u,f]=(0,ao.useState)(!1),d=(0,ao.useRef)(!1),m=Co(i),[p,g]=Gd(i,mw,!0),b=i.onKeyDown,x=ne(E=>{b?.(E);let V=E.currentTarget;if(E.defaultPrevented||p||m||!mt(E)||yt(V)||V.isContentEditable)return;let A=o&&E.key==="Enter",R=n&&E.key===" ",D=E.key==="Enter"&&!o,P=E.key===" "&&!n;if(D||P){E.preventDefault();return}if(A||R){let S=Ym(E);if(A){if(!S){E.preventDefault();let N=E,{view:M}=N,I=ae(N,["view"]),v=()=>vu(V,I);gu()?oo(V,"keyup",v):queueMicrotask(v)}}else R&&(d.current=!0,S||(E.preventDefault(),f(!0)))}}),_=i.onKeyUp,y=ne(E=>{if(_?.(E),E.defaultPrevented||p||m||E.metaKey)return;let V=n&&E.key===" ";if(d.current&&V&&(d.current=!1,!Ym(E))){E.preventDefault(),f(!1);let A=E.currentTarget,R=E,{view:D}=R,P=ae(R,["view"]);queueMicrotask(()=>vu(A,P))}});return i=Q(j(j({"data-active":u||void 0,type:s?"button":void 0},g),i),{ref:De(a,i.ref),onKeyDown:x,onKeyUp:y}),i=oi(i),i}),ZA=xe(function(t){let r=ku(t);return _e(dw,r)});var Na=c(me(),1),qm=c(k(),1),pw="span";function Um(e){return Wn(e).toLowerCase()}function gw(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function vw(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function hw(e){return e.sort(([t],[r])=>t-r)}function bw(e,t){if(!e||!t)return e;let r=_u(t).filter(Boolean).map(Um),o=[],n=(l,u=!1)=>(0,qm.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:l},o.length),i=hw(vw(gw(Um(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,u],f)=>{var d;let m=e.slice(l,l+u),p=(d=i[f+1])==null?void 0:d[0],g=e.slice(l+u,p);return[m,g]})].forEach((l,u)=>{l&&o.push(n(l,u%2===0))}),o}var xw=Se(function(t){var r=t,{store:o,value:n,userValue:i}=r,a=ae(r,["store","value","userValue"]);let s=fn();o=o||s;let l=(0,Na.useContext)(Ra),u=n??l,f=ln(o,m=>i??m?.value),d=(0,Na.useMemo)(()=>{if(u)return f?bw(u,f):u},[u,f]);return a=j({children:d},a),it(a)}),Da=xe(function(t){let r=xw(t);return _e(pw,r)});var $m=c(me(),1),ww="div";function Km(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function yw(e){let t=Km(e);return t?tr(e.currentTarget,t):!1}var Nu=Symbol("composite-hover");function _w(e){let t=Km(e);if(!t)return!1;do{if(It(t,Nu)&&t[Nu])return!0;t=t.parentElement}while(t);return!1}var Du=Se(function(t){var r=t,{store:o,focusOnHover:n=!0,blurOnHoverEnd:i=!!n}=r,a=ae(r,["store","focusOnHover","blurOnHoverEnd"]);let s=Sa();o=o||s,nt(o,!1);let l=Yd(),u=a.onMouseMove,f=ze(n),d=ne(x=>{if(u?.(x),!x.defaultPrevented&&l()&&f(x)){if(!Tu(x.currentTarget)){let _=o?.getState().baseElement;_&&!zt(_)&&_.focus()}o?.setActiveId(x.currentTarget.id)}}),m=a.onMouseLeave,p=ze(i),g=ne(x=>{var _;m?.(x),!x.defaultPrevented&&l()&&(yw(x)||_w(x)||f(x)&&p(x)&&(o?.setActiveId(null),(_=o?.getState().baseElement)==null||_.focus()))}),b=(0,$m.useCallback)(x=>{x&&(x[Nu]=!0)},[]);return a=Q(j({},a),{ref:De(b,a.ref),onMouseMove:d,onMouseLeave:g}),it(a)}),mT=no(xe(function(t){let r=Du(t);return _e(ww,r)}));var Ma=c(me(),1),Sw="div",Mu=Se(function(t){var r=t,{store:o,shouldRegisterItem:n=!0,getItem:i=Gn,element:a}=r,s=ae(r,["store","shouldRegisterItem","getItem","element"]);let l=Ud();o=o||l;let u=Ht(s.id),f=(0,Ma.useRef)(a);return(0,Ma.useEffect)(()=>{let d=f.current;if(!u||!d||!n)return;let m=i({id:u,element:d});return o?.renderItem(m)},[u,n,i,o]),s=Q(j({},s),{ref:De(f,s.ref)}),it(s)}),wT=xe(function(t){let r=Mu(t);return _e(Sw,r)});var Or=c(me(),1),Zm=c(k(),1),Cw="button";function Pw(e){return Yn(e)?!0:e.tagName==="INPUT"&&!Pr(e)}function Ew(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function Ow(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function Xm(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=on(e);if(!a)return;let s=Ew(a,o),l,u;for(let f=0;f=0){u!==void 0&&uU.rowId===y);return b.ariaPosInSet+W.findIndex(U=>U.id===p)},isTabbable(O){if(!O?.renderedItems.length)return!0;if(O.virtualFocus)return!1;if(s)return!0;if(O.activeId===null)return!1;let W=o?.item(O.activeId);return W?.disabled||!W?.element?!0:O.activeId===p}}),P=(0,Or.useCallback)(O=>{var W;let U=Q(j({},O),{id:p||O.id,rowId:y,disabled:!!_,children:(W=O.element)==null?void 0:W.textContent});return l?l(U):U},[p,y,_,l]),S=d.onFocus,N=(0,Or.useRef)(!1),M=ne(O=>{if(S?.(O),O.defaultPrevented||wa(O)||!p||!o||Aw(O,o))return;let{virtualFocus:W,baseElement:U}=o.getState();if(o.setActiveId(p),Yn(O.currentTarget)&&Am(O.currentTarget),!W||!mt(O)||Pw(O.currentTarget)||!U?.isConnected)return;Eo()&&O.currentTarget.hasAttribute("data-autofocus")&&O.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),N.current=!0,O.relatedTarget===U||Ro(o,O.relatedTarget)?Tm(U):U.focus()}),I=d.onBlurCapture,v=ne(O=>{if(I?.(O),O.defaultPrevented)return;let W=o?.getState();W?.virtualFocus&&N.current&&(N.current=!1,O.preventDefault(),O.stopPropagation())}),w=d.onKeyDown,T=ze(i),h=ze(a),C=ne(O=>{if(w?.(O),O.defaultPrevented||!mt(O)||!o)return;let{currentTarget:W}=O,U=o.getState(),Ze=o.item(p),ot=!!Ze?.rowId,de=U.orientation!=="horizontal",Ee=U.orientation!=="vertical",Y=()=>!!(ot||Ee||!U.baseElement||!yt(U.baseElement)),Qe={ArrowUp:(ot||de)&&o.up,ArrowRight:(ot||Ee)&&o.next,ArrowDown:(ot||de)&&o.down,ArrowLeft:(ot||Ee)&&o.previous,Home:()=>{if(Y())return!ot||O.ctrlKey?o?.first():o?.previous(-1)},End:()=>{if(Y())return!ot||O.ctrlKey?o?.last():o?.next(-1)},PageUp:()=>Xm(W,o,o?.up,!0),PageDown:()=>Xm(W,o,o?.down)}[O.key];if(Qe){if(Yn(W)){let Mr=rn(W),zo=Ee&&O.key==="ArrowLeft",vo=Ee&&O.key==="ArrowRight",Ls=de&&O.key==="ArrowUp",Bs=de&&O.key==="ArrowDown";if(vo||Bs){let{length:js}=fu(W);if(Mr.end!==js)return}else if((zo||Ls)&&Mr.start!==0)return}let Ut=Qe();if(T(O)||Ut!==void 0){if(!h(O))return;O.preventDefault(),o.move(Ut)}}}),F=(0,Or.useMemo)(()=>({id:p,baseElement:E}),[p,E]);return d=nr(d,O=>(0,Zm.jsx)(Xd.Provider,{value:F,children:O}),[F]),d=Q(j({id:p,"data-active-item":V||void 0},d),{ref:De(g,d.ref),tabIndex:D?d.tabIndex:-1,onFocus:M,onBlurCapture:v,onKeyDown:C}),d=ku(d),d=Mu(Q(j({store:o},d),{getItem:P,shouldRegisterItem:p?d.shouldRegisterItem:!1})),it(Q(j({},d),{"aria-setsize":A,"aria-posinset":R}))}),NT=no(xe(function(t){let r=Fu(t);return _e(Cw,r)}));var Fa=c(me(),1),Lu=c(k(),1),Tw="div";function Iw(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function Rw(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var Qm=Se(function(t){var r=t,{store:o,value:n,hideOnClick:i,setValueOnClick:a,selectValueOnClick:s=!0,resetValueOnSelect:l,focusOnHover:u=!1,moveOnKeyPress:f=!0,getItem:d}=r,m=ae(r,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]),p;let g=fn();o=o||g,nt(o,!1);let{resetValueOnSelectState:b,multiSelectable:x,selected:_}=Ea(o,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(v){return Array.isArray(v.selectedValue)},selected(v){return Iw(v.selectedValue,n)}}),y=(0,Fa.useCallback)(v=>{let w=Q(j({},v),{value:n});return d?d(w):w},[n,d]);a=a??!x,i=i??(n!=null&&!x);let E=m.onClick,V=ze(a),A=ze(s),R=ze((p=l??b)!=null?p:x),D=ze(i),P=ne(v=>{E?.(v),!v.defaultPrevented&&(Vd(v)||Rd(v)||(n!=null&&(A(v)&&(R(v)&&o?.resetValue(),o?.setSelectedValue(w=>Array.isArray(w)?w.includes(n)?w.filter(T=>T!==n):[...w,n]:n)),V(v)&&o?.setValue(n)),D(v)&&o?.hide()))}),S=m.onKeyDown,N=ne(v=>{if(S?.(v),v.defaultPrevented)return;let w=o?.getState().baseElement;if(!w||zt(w))return;(v.key.length===1||v.key==="Backspace"||v.key==="Delete")&&(queueMicrotask(()=>w.focus()),yt(w)&&o?.setValue(w.value))});x&&_!=null&&(m=j({"aria-selected":_},m)),m=nr(m,v=>(0,Lu.jsx)(Ra.Provider,{value:n,children:(0,Lu.jsx)(Pm.Provider,{value:_??!1,children:v})}),[n,_]);let M=(0,Fa.useContext)(Ta);m=Q(j({role:Rw(M),children:n},m),{onClick:P,onKeyDown:N});let I=ze(f);return m=Fu(Q(j({store:o},m),{getItem:y,moveOnKeyPress:v=>{if(!I(v))return!1;let w=new Event("combobox-item-move"),T=o?.getState().baseElement;return T?.dispatchEvent(w),!0}})),m=Du(j({store:o,focusOnHover:u},m)),m}),ni=no(xe(function(t){let r=Qm(t);return _e(Tw,r)}));var Vw="label",kw=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=Ia();o=o||i,nt(o,!1);let a=o.useState(s=>{var l;return(l=s.baseElement)==null?void 0:l.id});return n=j({htmlFor:a},n),it(n)}),La=no(xe(function(t){let r=kw(t);return _e(Vw,r)}));var dn=c(me(),1),tp=c(of(),1),Bu=c(k(),1),Nw="div";function Jm(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function Dw(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function ep(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function ju(e,t,r){return!r&&t!==!1&&(!e||!!t)}var Mw=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=Cu();o=o||a,nt(o,!1);let s=(0,dn.useRef)(null),l=Ht(i.id),[u,f]=(0,dn.useState)(null),d=o.useState("open"),m=o.useState("mounted"),p=o.useState("animated"),g=o.useState("contentElement"),b=ln(o.disclosure,"contentElement");Ne(()=>{s.current&&o?.setContentElement(s.current)},[o]),Ne(()=>{let E;return o?.setState("animated",V=>(E=V,!0)),()=>{E!==void 0&&o?.setState("animated",E)}},[o]),Ne(()=>{if(p){if(!g?.isConnected){f(null);return}return Dw(()=>{f(d?"enter":m?"leave":null)})}},[p,g,d,m]),Ne(()=>{if(!o||!p||!u||!g)return;let E=()=>o?.setState("animating",!1),V=()=>(0,tp.flushSync)(E);if(u==="leave"&&d||u==="enter"&&!d)return;if(typeof p=="number")return Jm(p,V);let{transitionDuration:A,animationDuration:R,transitionDelay:D,animationDelay:P}=getComputedStyle(g),{transitionDuration:S="0",animationDuration:N="0",transitionDelay:M="0",animationDelay:I="0"}=b?getComputedStyle(b):{},v=ep(D,P,M,I),w=ep(A,R,S,N),T=v+w;if(!T){u==="enter"&&o.setState("animated",!1),E();return}let h=1e3/60,C=Math.max(T-h,0);return Jm(C,V)},[o,p,g,b,d,u]),i=nr(i,E=>(0,Bu.jsx)(Oa,{value:o,children:E}),[o]);let x=ju(m,i.hidden,n),_=i.style,y=(0,dn.useMemo)(()=>x?Q(j({},_),{display:"none"}):_,[x,_]);return i=Q(j({id:l,"data-open":d||void 0,"data-enter":u==="enter"||void 0,"data-leave":u==="leave"||void 0,hidden:x},i),{ref:De(l?o.setContentElement:null,s,i.ref),style:y}),it(i)}),Fw=xe(function(t){let r=Mw(t);return _e(Nw,r)}),lI=xe(function(t){var r=t,{unmountOnHide:o}=r,n=ae(r,["unmountOnHide"]);let i=Cu(),a=n.store||i;return ln(a,l=>!o||l?.mounted)===!1?null:(0,Bu.jsx)(Fw,j({},n))});var Ba=c(me(),1),Hu=c(k(),1),Lw="div",rp=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=fn(!0),s=Eu();o=o||s;let l=!!o&&o===a;nt(o,!1);let u=(0,Ba.useRef)(null),f=Ht(i.id),d=o.useState("mounted"),m=ju(d,i.hidden,n),p=m?Q(j({},i.style),{display:"none"}):i.style,g=o.useState(R=>Array.isArray(R.selectedValue)),b=Hd(u,"role",i.role),_=(b==="listbox"||b==="tree"||b==="grid")&&g||void 0,[y,E]=(0,Ba.useState)(!1),V=o.useState("contentElement");Ne(()=>{if(!d)return;let R=u.current;if(!R||V!==R)return;let D=()=>{E(!!R.querySelector("[role='listbox']"))},P=new MutationObserver(D);return P.observe(R,{subtree:!0,childList:!0,attributeFilter:["role"]}),D(),()=>P.disconnect()},[d,V]),y||(i=j({role:"listbox","aria-multiselectable":_},i)),i=nr(i,R=>(0,Hu.jsx)(Cm,{value:o,children:(0,Hu.jsx)(Ta.Provider,{value:b,children:R})}),[o,b]);let A=f&&(!a||!l)?o.setContentElement:null;return i=Q(j({id:f,hidden:m},i),{ref:De(A,u,i.ref),style:p}),it(i)}),ii=xe(function(t){let r=rp(t);return _e(Lw,r)});var up=c(zu(),1);var cp=c(Vt(),1),Ar=c(X(),1),Vo=c(z(),1),Wt=c(K(),1);var Gw=[],ai=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:Gw;var si=c(z(),1),Yw=[];function pt({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:Yw,[o,n]=(0,si.useState)(r),[i,a]=(0,si.useState)(!1);return(0,si.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let u=Array.isArray(l)&&l.length>0?l:r;n(u)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var le=c(k(),1);function ap(e=""){return(0,up.default)(e.trim().toLowerCase())}var sp=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function lp(e,t){return`${e}-${t}`}var fp=({selected:e})=>(0,le.jsx)("span",{className:q("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,le.jsx)(Wt.Icon,{icon:In})}),dp=({selected:e})=>(0,le.jsx)("span",{className:q("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function mp({view:e,filter:t,onChangeView:r}){let o=(0,cp.useInstanceId)(mp,"dataviews-filter-list-box"),[n,i]=(0,Vo.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=ai(t,a);return(0,le.jsx)(Wt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Ar.sprintf)((0,Ar.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(lp(o,t.elements[0].value))},render:(0,le.jsx)(Wt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,le.jsxs)(Wt.Composite.Hover,{render:(0,le.jsx)(Wt.Composite.Item,{id:lp(o,l.value),render:(0,le.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:sp(t,a,l.value)}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:sp(t,a,l.value)}];r({...e,page:1,filters:u})}}),children:[t.singleSelection&&(0,le.jsx)(dp,{selected:s===l.value}),!t.singleSelection&&(0,le.jsx)(fp,{selected:s.includes(l.value)}),(0,le.jsx)("span",{children:l.label})]},l.value))})}function Uw({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Vo.useState)(""),i=(0,Vo.useDeferredValue)(o),a=e.filters?.find(u=>u.field===t.field),s=ai(t,a),l=(0,Vo.useMemo)(()=>{let u=ap(i);return t.elements.filter(f=>ap(f.label).includes(u))},[t.elements,i]);return(0,le.jsxs)(ka,{selectedValue:s,setSelectedValue:u=>{let f=a?[...(e.filters??[]).map(d=>d.field===t.field?{...d,operator:a.operator||t.operators[0],value:u}:d)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:u}];r({...e,page:1,filters:f})},setValue:n,children:[(0,le.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,le.jsx)(La,{render:(0,le.jsx)(Wt.VisuallyHidden,{children:(0,Ar.__)("Search items")}),children:(0,Ar.__)("Search items")}),(0,le.jsx)(Va,{autoSelect:"always",placeholder:(0,Ar.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,le.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,le.jsx)(Wt.Icon,{icon:kl})})]}),(0,le.jsxs)(ii,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(u=>(0,le.jsxs)(ni,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,le.jsx)(dp,{selected:s===u.value}),!t.singleSelection&&(0,le.jsx)(fp,{selected:s.includes(u.value)}),(0,le.jsxs)("span",{children:[(0,le.jsx)(Da,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,le.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!l.length&&(0,le.jsx)("p",{children:(0,Ar.__)("No results found")})]})]})}function pp(e){let{elements:t,isLoading:r}=pt({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,le.jsx)(Wt.Spinner,{})});if(t.length===0)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Ar.__)("No elements found")});let o=t.length>10?Uw:mp;return(0,le.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var hp=c(vp(),1),bp=c(Vt(),1),Wu=c(z(),1),xp=c(K(),1);var Gu=c(k(),1);function wp({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(u=>u.field===e.field),i=ai(e,n),a=(0,Wu.useMemo)(()=>{let u=o.find(f=>f.id===e.field);return u&&{...u,isValid:{},getValue:({item:f})=>f[u.id],setValue:({value:f})=>({[u.id]:f})}},[o,e.field]),s=(0,Wu.useMemo)(()=>(t.filters??[]).reduce((u,f)=>(u[f.field]=f.value,u),{}),[t.filters]),l=(0,bp.useEvent)(u=>{if(!a||!n)return;let f=a.getValue({item:u});(0,hp.default)(f,i)||r({...t,filters:(t.filters??[]).map(d=>d.field===e.field?{...d,operator:n.operator||e.operators[0],value:f===""?void 0:f}:d)})});return!a||!a.Edit||!n?null:(0,Gu.jsx)(xp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Gu.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var qw=Math.pow(10,8)*24*60*60*1e3,qI=-qw,Ha=6048e5,yp=864e5;var $w=3600;var _p=$w*24,$I=_p*7,Kw=_p*365.2425,Xw=Kw/12,KI=Xw*3,Yu=Symbol.for("constructDateFrom");function Ke(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Yu in e?e[Yu](t):e instanceof Date?new e.constructor(t):new Date(t)}function ve(e,t){return Ke(t||e,e)}function za(e,t,r){let o=ve(e,r?.in);return isNaN(t)?Ke(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function Wa(e,t,r){let o=ve(e,r?.in);if(isNaN(t))return Ke(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Ke(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var Zw={};function so(){return Zw}function Tr(e,t){let r=so(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=ve(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function Uu(e){let t=ve(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function Sp(e,...t){let r=Ke.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function qu(e,t){let r=ve(e,t?.in);return r.setHours(0,0,0,0),r}function Cp(e,t,r){let[o,n]=Sp(r?.in,e,t),i=qu(o),a=qu(n),s=+i-Uu(i),l=+a-Uu(a);return Math.round((s-l)/yp)}function Pp(e,t){let r=Ga(e,t),o=Ke(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),ko(o)}function Ep(e,t,r){return za(e,t*7,r)}function Op(e,t,r){return Wa(e,t*12,r)}function Ap(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function mn(e){return!(!Ap(e)&&typeof e!="number"||isNaN(+ve(e)))}function Tp(e,t){let r=ve(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ya(e,t){let r=ve(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var Qw={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Ip=(e,t,r)=>{let o,n=Qw[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Ua(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Jw={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},e0={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},t0={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Rp={date:Ua({formats:Jw,defaultWidth:"full"}),time:Ua({formats:e0,defaultWidth:"full"}),dateTime:Ua({formats:t0,defaultWidth:"full"})};var r0={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Vp=(e,t,r,o)=>r0[e];function pn(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var o0={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},n0={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},i0={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},a0={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},s0={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},l0={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},u0=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},kp={ordinalNumber:u0,era:pn({values:o0,defaultWidth:"wide"}),quarter:pn({values:n0,defaultWidth:"wide",argumentCallback:e=>e-1}),month:pn({values:i0,defaultWidth:"wide"}),day:pn({values:a0,defaultWidth:"wide"}),dayPeriod:pn({values:s0,defaultWidth:"wide",formattingValues:l0,defaultFormattingWidth:"wide"})};function gn(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?f0(s,d=>d.test(a)):c0(s,d=>d.test(a)),u;u=e.valueCallback?e.valueCallback(l):l,u=r.valueCallback?r.valueCallback(u):u;let f=t.slice(a.length);return{value:u,rest:f}}}function c0(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function f0(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var d0=/^(\d+)(th|st|nd|rd)?/i,m0=/\d+/i,p0={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},g0={any:[/^b/i,/^(a|c)/i]},v0={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},h0={any:[/1/i,/2/i,/3/i,/4/i]},b0={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},x0={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},w0={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},y0={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},_0={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},S0={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Dp={ordinalNumber:Np({matchPattern:d0,parsePattern:m0,valueCallback:e=>parseInt(e,10)}),era:gn({matchPatterns:p0,defaultMatchWidth:"wide",parsePatterns:g0,defaultParseWidth:"any"}),quarter:gn({matchPatterns:v0,defaultMatchWidth:"wide",parsePatterns:h0,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gn({matchPatterns:b0,defaultMatchWidth:"wide",parsePatterns:x0,defaultParseWidth:"any"}),day:gn({matchPatterns:w0,defaultMatchWidth:"wide",parsePatterns:y0,defaultParseWidth:"any"}),dayPeriod:gn({matchPatterns:_0,defaultMatchWidth:"any",parsePatterns:S0,defaultParseWidth:"any"})};var $u={code:"en-US",formatDistance:Ip,formatLong:Rp,formatRelative:Vp,localize:kp,match:Dp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Mp(e,t){let r=ve(e,t?.in);return Cp(r,Ya(r))+1}function Fp(e,t){let r=ve(e,t?.in),o=+ko(r)-+Pp(r);return Math.round(o/Ha)+1}function qa(e,t){let r=ve(e,t?.in),o=r.getFullYear(),n=so(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ke(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Tr(a,t),l=Ke(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let u=Tr(l,t);return+r>=+s?o+1:+r>=+u?o:o-1}function Lp(e,t){let r=so(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=qa(e,t),i=Ke(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Tr(i,t)}function Bp(e,t){let r=ve(e,t?.in),o=+Tr(r,t)-+Lp(r,t);return Math.round(o/Ha)+1}function ce(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Ir={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return ce(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ce(r+1,2)},d(e,t){return ce(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return ce(e.getHours()%12||12,t.length)},H(e,t){return ce(e.getHours(),t.length)},m(e,t){return ce(e.getMinutes(),t.length)},s(e,t){return ce(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ce(n,t.length)}};var vn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Ku={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Ir.y(e,t)},Y:function(e,t,r,o){let n=qa(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ce(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ce(i,t.length)},R:function(e,t){let r=Ga(e);return ce(r,t.length)},u:function(e,t){let r=e.getFullYear();return ce(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ce(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ce(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Ir.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return ce(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=Bp(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ce(n,t.length)},I:function(e,t,r){let o=Fp(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ce(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Ir.d(e,t)},D:function(e,t,r){let o=Mp(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ce(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ce(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ce(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return ce(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=vn.noon:o===0?n=vn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=vn.evening:o>=12?n=vn.afternoon:o>=4?n=vn.morning:n=vn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Ir.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Ir.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Ir.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Ir.s(e,t)},S:function(e,t){return Ir.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return Hp(o);case"XXXX":case"XX":return No(o);default:return No(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return Hp(o);case"xxxx":case"xx":return No(o);default:return No(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+jp(o,":");default:return"GMT"+No(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+jp(o,":");default:return"GMT"+No(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ce(o,t.length)},T:function(e,t,r){return ce(+e,t.length)}};function jp(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+ce(i,2)}function Hp(e,t){return e%60===0?(e>0?"-":"+")+ce(Math.abs(e)/60,2):No(e,t)}function No(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ce(Math.trunc(o/60),2),i=ce(o%60,2);return r+n+t+i}var zp=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Wp=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},C0=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return zp(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",zp(o,t)).replace("{{time}}",Wp(n,t))},Gp={p:Wp,P:C0};var P0=/^D+$/,E0=/^Y+$/,O0=["D","DD","YY","YYYY"];function Yp(e){return P0.test(e)}function Up(e){return E0.test(e)}function qp(e,t,r){let o=A0(e,t,r);if(console.warn(o),O0.includes(e))throw new RangeError(o)}function A0(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var T0=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,I0=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,R0=/^'([^]*?)'?$/,V0=/''/g,k0=/[a-zA-Z]/;function li(e,t,r){let o=so(),n=r?.locale??o.locale??$u,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=ve(e,r?.in);if(!mn(s))throw new RangeError("Invalid time value");let l=t.match(I0).map(f=>{let d=f[0];if(d==="p"||d==="P"){let m=Gp[d];return m(f,n.formatLong)}return f}).join("").match(T0).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let d=f[0];if(d==="'")return{isToken:!1,value:N0(f)};if(Ku[d])return{isToken:!0,value:f};if(d.match(k0))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(f=>{if(!f.isToken)return f.value;let d=f.value;(!r?.useAdditionalWeekYearTokens&&Up(d)||!r?.useAdditionalDayOfYearTokens&&Yp(d))&&qp(d,t,String(e));let m=Ku[d[0]];return m(s,d,n.localize,u)}).join("")}function N0(e){let t=e.match(R0);return t?t[1].replace(V0,"'"):e}function Do(e,t,r){return za(e,-t,r)}function $a(e,t,r){return Wa(e,-t,r)}function $p(e,t,r){return Ep(e,-t,r)}function Ka(e,t,r){return Op(e,-t,r)}var H=c(X(),1),Fe=c(z(),1),Ct=c(Mo(),1);var Xu=c(k(),1),We={Name:(0,Xu.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Xu.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Xp(e,t){switch(t){case"days":return Do(new Date,e);case"weeks":return $p(new Date,e);case"months":return $a(new Date,e);case"years":return Ka(new Date,e);default:return new Date}}var Zp={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},Xa=[{name:Ae,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Te,...Zp},{name:ft,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:Je,...Zp},{name:ht,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),We),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:bt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),We),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Xp(r.value,r.unit),n=(0,Ct.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:Ot,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),We),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Xp(r.value,r.unit);return(0,Ct.getDate)(t.getValue({item:e}))(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:ke,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Br,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:Hr,label:(0,H.__)("Less than or equal"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:zr,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:Wr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:Yr,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:Ur,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:Zt,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Qt,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Jt,label:(0,H.__)("Starts with"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:qr,label:(0,H.__)("On"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:$r,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],Fo=e=>Xa.find(t=>t.name===e),Qp=()=>Xa.map(e=>e.name),Jp=e=>Xa.filter(t=>t.selection==="single").some(t=>t.name===e),eg=e=>Xa.some(t=>t.name===e);var st=c(k(),1),D0="Enter",M0=" ",F0=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=Fo(t?.operator);return o!==void 0?o.filterText(r,e):(0,Rr.sprintf)((0,Rr.__)("Unknown status for %1$s"),r.name)};function L0({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:Fo(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,st.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,st.jsx)($t.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,st.jsx)($t.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Rr.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,u=n?[...(t.filters??[]).map(f=>{if(f.field===e.field){let d=Fo(l)?.selection,m=Fo(s)?.selection,p=d!==m||[d,m].includes("custom");return{...f,value:p?void 0:f.value,operator:s}}return f})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function tg({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,Za.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(x=>x.field===i.field),u=[],f=(0,Za.useMemo)(()=>{let x=r.find(_=>_.id===i.field);return x&&{...x,getValue:({item:_})=>_[x.id]}},[r,i.field]),{elements:d}=pt({elements:i.elements,getElements:i.getElements});if(d.length>0)u=d.filter(x=>i.singleSelection?x.value===l?.value:l?.value?.includes(x.value));else if(Array.isArray(l?.value)){let x=l.value.map(_=>f?.getValueFormatted({item:{[f.id]:_},field:f})||String(_));u=[{value:l.value,label:x}]}else if(typeof l?.value=="object")u=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let x=f!==void 0?f.getValueFormatted({item:{[f.id]:l.value},field:f}):String(l.value);u=[{value:l.value,label:x}]}let m=i.isPrimary,p=l?.isLocked,g=!p&&l?.value!==void 0,b=!p&&(!m||g);return(0,st.jsx)($t.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:x,onToggle:_})=>(0,st.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,st.jsx)($t.Tooltip,{text:(0,Rr.sprintf)((0,Rr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,st.jsx)("div",{className:q("dataviews-filters__summary-chip",{"has-reset":b,"has-values":g,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||_()},onKeyDown:y=>{!p&&[D0,M0].includes(y.key)&&(_(),y.preventDefault())},"aria-disabled":p,"aria-pressed":x,"aria-expanded":x,ref:n,children:(0,st.jsx)(F0,{activeElements:u,filterInView:l,filter:i})})}),b&&(0,st.jsx)($t.Tooltip,{text:m?(0,Rr.__)("Reset"):(0,Rr.__)("Remove"),placement:"top",children:(0,st.jsx)("button",{className:q("dataviews-filters__summary-chip-remove",{"has-values":g}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(y=>y.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,st.jsx)($t.Icon,{icon:Rn})})})]}),renderContent:()=>(0,st.jsxs)(L,{direction:"column",justify:"flex-start",children:[(0,st.jsx)(L0,{...o}),o.filter.hasElements?(0,st.jsx)(pp,{...o,filter:{...o.filter,elements:d}}):(0,st.jsx)(wp,{...o,fields:r})]})})}var Qa=c(K(),1),rg=c(X(),1),og=c(z(),1);var Vr=c(k(),1),{Menu:ui}=J(Qa.privateApis);function Zu({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Vr.jsxs)(ui,{children:[(0,Vr.jsx)(ui.TriggerButton,{...n}),(0,Vr.jsx)(ui.Popover,{children:i.map(a=>(0,Vr.jsx)(ui.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Vr.jsx)(ui.ItemLabel,{children:a.name})},a.field))})]})}function B0({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Vr.jsx)(Zu,{triggerProps:{render:(0,Vr.jsx)(Qa.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,rg.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var ng=(0,og.forwardRef)(B0);var ig=c(K(),1),ag=c(X(),1),sg=c(k(),1);function lg({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,sg.jsx)(ig.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,ag.__)("Reset")})}var ug=c(z(),1);function j0(e,t){return(0,ug.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>Jp(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&eg(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var ci=j0;var fi=c(k(),1);function H0({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,hn.useContext)($),a=(0,hn.useRef)(null),s=ci(t,r),l=(0,fi.jsx)(ng,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=s.filter(d=>d.isVisible);if(u.length===0)return null;let f=[...u.map(d=>(0,fi.jsx)(tg,{filter:d,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},d.field)),l];return f.push((0,fi.jsx)(lg,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,fi.jsx)(L,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:f})}var di=(0,hn.memo)(H0);var lo=c(z(),1),cg=c(K(),1);var Ja=c(X(),1);var lr=c(k(),1);function z0(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,lo.useContext)($),a=(0,lo.useRef)(null),s=(0,lo.useCallback)(p=>{r(p),i(!0)},[r,i]),u=!!e.filter(p=>p.isVisible).length;if(e.length===0)return null;let f={label:(0,Ja.__)("Add filter"),"aria-expanded":!1,isPressed:!1},d={label:(0,Ja._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=(0,lr.jsx)(cg.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Vn,...u?d:f});return(0,lr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:u?(0,lr.jsx)(W0,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,lr.jsx)(Zu,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:m}})})}function W0({buttonRef:e,filtersCount:t,children:r}){return(0,lo.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,lr.jsxs)(lr.Fragment,{children:[r,!!t&&(0,lr.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var es=z0;var fg=c(z(),1);var dg=c(k(),1);function G0(e){let{isShowingFilter:t}=(0,fg.useContext)($);return t?(0,dg.jsx)(di,{...e}):null}var ts=G0;var mg=c(z(),1),pg=c(X(),1);var Qu=c(k(),1);function Ju({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,view:s,onChangeView:l,selection:u,onChangeSelection:f,setOpenedFilter:d,onClickItem:m,isItemClickable:p,renderItemLink:g,defaultLayouts:b,empty:x=(0,Qu.jsx)("p",{children:(0,pg.__)("No results")})}=(0,mg.useContext)($),_=eo.find(y=>y.type===s.type&&b[y.type])?.component;return(0,Qu.jsx)(_,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,onChangeView:l,onChangeSelection:f,selection:u,setOpenedFilter:d,onClickItem:m,renderItemLink:g,isItemClickable:p,view:s,empty:x})}var gg=c(z(),1);var mi=c(k(),1),Y0=[];function ec(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=Y0}=(0,gg.useContext)($),i=$o(n,o)&&[Go,ea].includes(e.type);return!t||!r||r<=1&&!i?null:!!t&&(0,mi.jsxs)(L,{direction:"row",justify:"end",align:"center",className:"dataviews-footer",gap:"sm",children:[i&&(0,mi.jsx)(na,{}),(0,mi.jsx)(nd,{})]})}var vg=c(X(),1),Kt=c(z(),1),hg=c(K(),1),bg=c(Vt(),1);var xg=c(k(),1),U0=(0,Kt.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Kt.useContext)($),[n,i,a]=(0,bg.useDebouncedInput)(r.search);(0,Kt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,Kt.useRef)(o),l=(0,Kt.useRef)(r);(0,Kt.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,Kt.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let u=t||(0,vg.__)("Search");return(0,xg.jsx)(hg.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),tc=U0;var Pe=c(K(),1),uo=c(X(),1),ur=c(z(),1);var oc=c(yg(),1),Eg=c(Vt(),1);var _g=c(K(),1),rc=c(X(),1),Sg=c(z(),1);var Cg=c(k(),1);function Pg(){let e=(0,Sg.useContext)($),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,Cg.jsx)(_g.ToggleControl,{label:(0,rc.__)("Enable infinite scroll"),help:(0,rc.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var ie=c(k(),1),{Menu:pi}=J(Pe.privateApis),q0={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function nc(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,ur.useContext)($),o=Object.keys(r);if(o.length<=1)return null;let n=eo.find(i=>e.type===i.type);return(0,ie.jsxs)(pi,{children:[(0,ie.jsx)(pi.TriggerButton,{render:(0,ie.jsx)(Pe.Button,{size:"compact",icon:n?.icon,label:(0,uo.__)("Layout")})}),(0,ie.jsx)(pi.Popover,{children:o.map(i=>{let a=eo.find(s=>s.type===i);return a?(0,ie.jsx)(pi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,oc.default)("Invalid dataview")},children:(0,ie.jsx)(pi.ItemLabel,{children:a.label})},i):null})})]})}function $0(){let{view:e,fields:t,onChangeView:r}=(0,ur.useContext)($),o=(0,ur.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,ie.jsx)(Pe.SelectControl,{__next40pxDefaultSize:!0,label:(0,uo.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function K0(){let{view:e,fields:t,onChangeView:r}=(0,ur.useContext)($);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,ie.jsx)(Pe.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,uo.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,oc.default)("Invalid direction")},children:Zi.map(i=>(0,ie.jsx)(Pe.__experimentalToggleGroupControlOptionIcon,{value:i,icon:vf[i],label:Ji[i]},i))})}function X0(){let{view:e,config:t,onChangeView:r}=(0,ur.useContext)($),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,ie.jsx)(Pe.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,uo.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,ie.jsx)(Pe.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function Z0({title:e,description:t,children:r}){return(0,ie.jsxs)(Pe.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,ie.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,ie.jsx)(Pe.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,ie.jsx)(Pe.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,ie.jsx)(Pe.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:r})]})}function ic(){let{view:e}=(0,ur.useContext)($),t=(0,Eg.useInstanceId)(Og,"dataviews-view-config-dropdown"),r=eo.find(o=>o.type===e.type);return(0,ie.jsx)(Pe.Dropdown,{expandOnMobile:!0,popoverProps:{...q0,id:t},renderToggle:({onToggle:o,isOpen:n})=>(0,ie.jsx)(Pe.Button,{size:"compact",icon:ml,label:(0,uo._x)("View options","View is used as a noun"),onClick:o,"aria-expanded":n?"true":"false","aria-controls":t}),renderContent:()=>(0,ie.jsx)(Pe.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,ie.jsx)(L,{direction:"column",className:"dataviews-view-config",gap:"xl",children:(0,ie.jsxs)(Z0,{title:(0,uo.__)("Appearance"),children:[(0,ie.jsxs)(L,{direction:"row",gap:"sm",className:"is-divided-in-two",children:[(0,ie.jsx)($0,{}),(0,ie.jsx)(K0,{})]}),!!r?.viewConfigOptions&&(0,ie.jsx)(r.viewConfigOptions,{}),(0,ie.jsx)(Pg,{}),(0,ie.jsx)(X0,{}),(0,ie.jsx)(sa,{})]})})})})}function Og(){return(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(nc,{}),(0,ie.jsx)(ic,{})]})}var Q0=(0,ur.memo)(Og),Ag=Q0;var Tg=c(K(),1),Ig=c(z(),1);function we(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var Rg=c(k(),1),{ValidatedCheckboxControl:J0}=J(Tg.privateApis);function Vg({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:u,isValid:f}=e,d=(0,Ig.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,Rg.jsx)(J0,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:we(f,i),hidden:o,label:l,help:u,checked:a({item:r}),onChange:d})}var rs=c(K(),1),kg=c(z(),1);var ac=c(k(),1),{ValidatedComboboxControl:ey}=J(rs.privateApis);function Ng({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:u,isValid:f}=t,d=l({item:e})??"",m=(0,kg.useCallback)(b=>r(u({item:e,value:b??""})),[e,r,u]),{elements:p,isLoading:g}=pt({elements:t.elements,getElements:t.getElements});return g?(0,ac.jsx)(rs.Spinner,{}):(0,ac.jsx)(ey,{required:!!t.isValid?.required,customValidity:we(f,n),label:i,value:d,help:a,placeholder:s,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var is=c(K(),1),Gt=c(z(),1),ns=c(X(),1),lc=c(Mo(),1);var xn=c(K(),1),sc=c(z(),1),cr=c(X(),1);var bn=c(k(),1),ty={[bt]:[{value:"days",label:(0,cr.__)("Days")},{value:"weeks",label:(0,cr.__)("Weeks")},{value:"months",label:(0,cr.__)("Months")},{value:"years",label:(0,cr.__)("Years")}],[Ot]:[{value:"days",label:(0,cr.__)("Days ago")},{value:"weeks",label:(0,cr.__)("Weeks ago")},{value:"months",label:(0,cr.__)("Months ago")},{value:"years",label:(0,cr.__)("Years ago")}]};function os({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=ty[i===bt?"inThePast":"over"],{id:s,label:l,getValue:u,setValue:f}=r,d=u({item:t}),{value:m="",unit:p=a[0].value}=d&&typeof d=="object"?d:{},g=(0,sc.useCallback)(x=>o(f({item:t,value:{value:Number(x),unit:p}})),[o,f,t,p]),b=(0,sc.useCallback)(x=>o(f({item:t,value:{value:m,unit:x}})),[o,f,t,m]);return(0,bn.jsx)(xn.BaseControl,{id:s,className:q(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,bn.jsxs)(L,{direction:"row",gap:"sm",children:[(0,bn.jsx)(xn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:g}),(0,bn.jsx)(xn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,cr.__)("Unit"),value:p,options:a,onChange:b,hideLabelFromVision:!0})]})})}var Dg=c(Mo(),1);function wn(e){if(!e)return null;let t=(0,Dg.getDate)(e);return t&&mn(t)?t:null}var co=c(k(),1),{DateCalendar:ry,ValidatedInputControl:oy}=J(is.privateApis),ny=e=>e?typeof e=="string"?e:li(e,"yyyy-MM-dd'T'HH:mm"):"";function iy({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:u,getValue:f,isValid:d}=t,m=f({item:e}),p=typeof m=="string"?m:void 0,[g,b]=(0,Gt.useState)(()=>wn(p)||new Date),x=(0,Gt.useRef)(null),_=(0,Gt.useRef)(),y=(0,Gt.useRef)(null),E=(0,Gt.useCallback)(N=>r(u({item:e,value:N})),[e,r,u]);(0,Gt.useEffect)(()=>()=>{_.current&&clearTimeout(_.current)},[]);let V=(0,Gt.useCallback)(N=>{let M;if(N){let I=N;if(p){let v=wn(p);v&&(I=new Date(N),I.setHours(v.getHours()),I.setMinutes(v.getMinutes()))}M=I.toISOString(),E(M),_.current&&clearTimeout(_.current)}else E(void 0);y.current=x.current&&x.current.ownerDocument.activeElement,_.current=setTimeout(()=>{x.current&&(x.current.focus(),x.current.blur(),E(M),y.current&&y.current instanceof HTMLElement&&y.current.focus())},0)},[E,p]),A=(0,Gt.useCallback)(N=>{if(N){let M=new Date(N);E(M.toISOString());let I=wn(M.toISOString());I&&b(I)}else E(void 0)},[E]),{format:R}=t,D=R.weekStartsOn??(0,lc.getSettings)().l10n.startOfWeek,{timezone:{string:P}}=(0,lc.getSettings)(),S=s;return d?.required&&!n&&!o?S=`${s} (${(0,ns.__)("Required")})`:!d?.required&&n&&!o&&(S=`${s} (${(0,ns.__)("Optional")})`),(0,co.jsx)(is.BaseControl,{id:a,label:S,help:l,hideLabelFromVision:o,children:(0,co.jsxs)(L,{direction:"column",gap:"lg",children:[(0,co.jsx)(ry,{style:{width:"100%"},selected:p&&wn(p)||void 0,onSelect:V,month:g,onMonthChange:b,timeZone:P||void 0,weekStartsOn:D}),(0,co.jsx)(oy,{ref:x,__next40pxDefaultSize:!0,required:!!d?.required,customValidity:we(d,i),type:"datetime-local",label:(0,ns.__)("Date time"),hideLabelFromVision:!0,value:p?ny(wn(p)||void 0):"",onChange:A})]})})}function Mg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Ot?(0,co.jsx)(os,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,co.jsx)(iy,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var vt=c(K(),1),ge=c(z(),1),Xe=c(X(),1),gt=c(Mo(),1);var ye=c(k(),1),{DateCalendar:ay,DateRangeCalendar:sy}=J(vt.privateApis),ly=[{id:"today",label:(0,Xe.__)("Today"),getValue:()=>(0,gt.getDate)(null)},{id:"yesterday",label:(0,Xe.__)("Yesterday"),getValue:()=>{let e=(0,gt.getDate)(null);return Do(e,1)}},{id:"past-week",label:(0,Xe.__)("Past week"),getValue:()=>{let e=(0,gt.getDate)(null);return Do(e,7)}},{id:"past-month",label:(0,Xe.__)("Past month"),getValue:()=>{let e=(0,gt.getDate)(null);return $a(e,1)}}],uy=[{id:"last-7-days",label:(0,Xe.__)("Last 7 days"),getValue:()=>{let e=(0,gt.getDate)(null);return[Do(e,7),e]}},{id:"last-30-days",label:(0,Xe.__)("Last 30 days"),getValue:()=>{let e=(0,gt.getDate)(null);return[Do(e,30),e]}},{id:"month-to-date",label:(0,Xe.__)("Month to date"),getValue:()=>{let e=(0,gt.getDate)(null);return[Tp(e),e]}},{id:"last-year",label:(0,Xe.__)("Last year"),getValue:()=>{let e=(0,gt.getDate)(null);return[Ka(e,1),e]}},{id:"year-to-date",label:(0,Xe.__)("Year to date"),getValue:()=>{let e=(0,gt.getDate)(null);return[Ya(e),e]}}],yn=e=>{if(!e)return null;let t=(0,gt.getDate)(e);return t&&mn(t)?t:null},uc=e=>e?typeof e=="string"?e:li(e,"yyyy-MM-dd"):"";function Fg({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,ge.useState)(void 0),u=(0,ge.useCallback)(()=>{let d=Array.isArray(r)?r:[r];for(let m of d){let p=m.current;if(p&&!p.validity.valid){l({type:"invalid",message:p.validationMessage});return}}l(void 0)},[r]);return(0,ge.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=t?we(a,t):void 0;for(let p of d){let g=p.current;g&&g.setCustomValidity(m?.type==="invalid"&&m.message?m.message:"")}},[r,a,t]),(0,ge.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=p=>{p.preventDefault(),n(!0)};for(let p of d)p.current?.addEventListener("invalid",m);return()=>{for(let p of d)p.current?.removeEventListener("invalid",m)}},[r,n]),(0,ge.useEffect)(()=>{if(!o)return;let d=t?we(a,t):void 0;d?l(d):u()},[o,a,t,u]),(0,ye.jsxs)("div",{onBlur:d=>{o||(!d.relatedTarget||!d.currentTarget.contains(d.relatedTarget))&&n(!0)},children:[i,(0,ye.jsx)("div",{"aria-live":"polite",children:s&&(0,ye.jsxs)("p",{className:q("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,ye.jsx)(vt.Icon,{className:"components-validated-control__indicator-icon",icon:hl,size:16,fill:"currentColor"}),s.message]})})]})}function cy({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:u,isValid:f,format:d}=t,[m,p]=(0,ge.useState)(null),g=d.weekStartsOn??(0,gt.getSettings)().l10n.startOfWeek,b=u({item:e}),x=typeof b=="string"?b:void 0,[_,y]=(0,ge.useState)(()=>yn(x)||new Date),[E,V]=(0,ge.useState)(!1),A=(0,ge.useRef)(null),R=(0,ge.useCallback)(I=>r(l({item:e,value:I})),[e,r,l]),D=(0,ge.useCallback)(I=>{let v=I?li(I,"yyyy-MM-dd"):void 0;R(v),p(null),V(!0)},[R]),P=(0,ge.useCallback)(I=>{let v=I.getValue(),w=uc(v);y(v),R(w),p(I.id),V(!0)},[R]),S=(0,ge.useCallback)(I=>{if(R(I),I){let v=yn(I);v&&y(v)}p(null),V(!0)},[R]),{timezone:{string:N}}=(0,gt.getSettings)(),M=s;return f?.required&&!n?M=`${s} (${(0,Xe.__)("Required")})`:!f?.required&&n&&(M=`${s} (${(0,Xe.__)("Optional")})`),(0,ye.jsx)(Fg,{field:t,validity:i,inputRefs:A,isTouched:E,setIsTouched:V,children:(0,ye.jsx)(vt.BaseControl,{id:a,className:"dataviews-controls__date",label:M,hideLabelFromVision:o,children:(0,ye.jsxs)(L,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[ly.map(I=>{let v=m===I.id;return(0,ye.jsx)(vt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:v,size:"small",onClick:()=>P(I),children:I.label},I.id)}),(0,ye.jsx)(vt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Xe.__)("Custom")})]}),(0,ye.jsx)(vt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:A,type:"date",label:(0,Xe.__)("Date"),hideLabelFromVision:!0,value:x,onChange:S,required:!!t.isValid?.required}),(0,ye.jsx)(ay,{style:{width:"100%"},selected:x&&yn(x)||void 0,onSelect:D,month:_,onMonthChange:y,timeZone:N||void 0,weekStartsOn:g})]})})})}function fy({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:u,format:f}=t,d,m=l({item:e});Array.isArray(m)&&m.length===2&&m.every(w=>typeof w=="string")&&(d=m);let p=f.weekStartsOn??(0,gt.getSettings)().l10n.startOfWeek,g=(0,ge.useCallback)(w=>{r(u({item:e,value:w}))},[e,r,u]),[b,x]=(0,ge.useState)(null),_=(0,ge.useMemo)(()=>{if(!d)return{from:void 0,to:void 0};let[w,T]=d;return{from:yn(w)||void 0,to:yn(T)||void 0}},[d]),[y,E]=(0,ge.useState)(()=>_.from||new Date),[V,A]=(0,ge.useState)(!1),R=(0,ge.useRef)(null),D=(0,ge.useRef)(null),P=(0,ge.useCallback)((w,T)=>{w&&T?g([uc(w),uc(T)]):!w&&!T&&g(void 0)},[g]),S=(0,ge.useCallback)(w=>{P(w?.from,w?.to),x(null),A(!0)},[P]),N=(0,ge.useCallback)(w=>{let[T,h]=w.getValue();E(T),P(T,h),x(w.id),A(!0)},[P]),M=(0,ge.useCallback)((w,T)=>{let[h,C]=d||[void 0,void 0];if(P(w==="from"?T:h,w==="to"?T:C),T){let W=yn(T);W&&E(W)}x(null),A(!0)},[d,P]),{timezone:I}=(0,gt.getSettings)(),v=s;return t.isValid?.required&&!n?v=`${s} (${(0,Xe.__)("Required")})`:!t.isValid?.required&&n&&(v=`${s} (${(0,Xe.__)("Optional")})`),(0,ye.jsx)(Fg,{field:t,validity:i,inputRefs:[R,D],isTouched:V,setIsTouched:A,children:(0,ye.jsx)(vt.BaseControl,{id:a,className:"dataviews-controls__date",label:v,hideLabelFromVision:o,children:(0,ye.jsxs)(L,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[uy.map(w=>{let T=b===w.id;return(0,ye.jsx)(vt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:T,size:"small",onClick:()=>N(w),children:w.label},w.id)}),(0,ye.jsx)(vt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!b,size:"small",accessibleWhenDisabled:!1,disabled:!!b,children:(0,Xe.__)("Custom")})]}),(0,ye.jsxs)(L,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ye.jsx)(vt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:R,type:"date",label:(0,Xe.__)("From"),hideLabelFromVision:!0,value:d?.[0],onChange:w=>M("from",w),required:!!t.isValid?.required}),(0,ye.jsx)(vt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,Xe.__)("To"),hideLabelFromVision:!0,value:d?.[1],onChange:w=>M("to",w),required:!!t.isValid?.required})]}),(0,ye.jsx)(sy,{style:{width:"100%"},selected:_,onSelect:S,month:y,onMonthChange:E,timeZone:I.string||void 0,weekStartsOn:p})]})})})}function Lg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Ot?(0,ye.jsx)(os,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===ht?(0,ye.jsx)(fy,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ye.jsx)(cy,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ss=c(K(),1);var Bg=c(K(),1),jg=c(z(),1);var Hg=c(k(),1),{ValidatedInputControl:dy}=J(Bg.privateApis);function fr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:u,placeholder:f,description:d,getValue:m,setValue:p,isValid:g}=t,b=m({item:e}),x=(0,jg.useCallback)(_=>r(p({item:e,value:_})),[e,p,r]);return(0,Hg.jsx)(dy,{required:!!g.required,markWhenOptional:n,customValidity:we(g,l),label:u,placeholder:f,value:b??"",help:d,onChange:x,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:g.pattern?g.pattern.constraint:void 0,minLength:g.minLength?g.minLength.constraint:void 0,maxLength:g.maxLength?g.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var as=c(k(),1);function zg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,as.jsx)(fr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,as.jsx)(ss.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,as.jsx)(ss.Icon,{icon:gl})})})}var us=c(K(),1);var ls=c(k(),1);function Wg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ls.jsx)(fr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,ls.jsx)(us.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ls.jsx)(us.Icon,{icon:El})})})}var fs=c(K(),1);var cs=c(k(),1);function Gg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,cs.jsx)(fr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,cs.jsx)(fs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,cs.jsx)(fs.Icon,{icon:Cl})})})}var kr=c(K(),1),gi=c(z(),1),ds=c(X(),1);var fo=c(k(),1),{ValidatedNumberControl:my}=J(kr.privateApis);function Yg(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function py({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,gi.useCallback)(l=>t([Yg(l),i]),[t,i]),s=(0,gi.useCallback)(l=>t([n,Yg(l)]),[t,n]);return(0,fo.jsx)(kr.BaseControl,{help:(0,ds.__)("The max. value must be greater than the min. value."),children:(0,fo.jsxs)(kr.Flex,{direction:"row",gap:4,children:[(0,fo.jsx)(kr.__experimentalNumberControl,{label:(0,ds.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,fo.jsx)(kr.__experimentalNumberControl,{label:(0,ds.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function ms({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:u,description:f,getValue:d,setValue:m,isValid:p}=t,g=d({item:e})??"",b=(0,gi.useCallback)(_=>{r(m({item:e,value:["",void 0].includes(_)?void 0:Number(_)}))},[e,r,m]),x=(0,gi.useCallback)(_=>{r(m({item:e,value:_}))},[e,r,m]);if(i===ht){let _=["",""];return Array.isArray(g)&&g.length===2&&g.every(y=>typeof y=="number"||y==="")&&(_=g),(0,fo.jsx)(py,{value:_,onChange:x,hideLabelFromVision:o,step:l})}return(0,fo.jsx)(my,{required:!!p.required,markWhenOptional:n,customValidity:we(p,a),label:u,help:f,value:g,onChange:b,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var Ug=c(k(),1);function qg(e){return(0,Ug.jsx)(ms,{...e})}var $g=c(k(),1);function Kg(e){return(0,$g.jsx)(ms,{...e})}var ps=c(K(),1),Xg=c(z(),1);var cc=c(k(),1),{ValidatedRadioControl:gy}=J(ps.privateApis);function Zg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:f}=t,{elements:d,isLoading:m}=pt({elements:t.elements,getElements:t.getElements}),p=l({item:e}),g=(0,Xg.useCallback)(b=>r(u({item:e,value:b})),[e,r,u]);return m?(0,cc.jsx)(ps.Spinner,{}):(0,cc.jsx)(gy,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(f,i),label:a,help:s,onChange:g,options:d,selected:p,hideLabelFromVision:o})}var gs=c(K(),1),Qg=c(z(),1);var fc=c(k(),1),{ValidatedSelectControl:vy}=J(gs.privateApis);function Jg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:u,setValue:f,isValid:d}=t,m=a==="array",p=u({item:e})??(m?[]:""),g=(0,Qg.useCallback)(_=>r(f({item:e,value:_})),[e,r,f]),{elements:b,isLoading:x}=pt({elements:t.elements,getElements:t.getElements});return x?(0,fc.jsx)(gs.Spinner,{}):(0,fc.jsx)(vy,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(d,i),label:s,value:p,help:l,options:b,onChange:g,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var dc=c(z(),1);var ev=c(k(),1);function tv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,ev.jsx)(fr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,dc.createElement)(s):void 0,suffix:l?(0,dc.createElement)(l):void 0})}var rv=c(K(),1),ov=c(z(),1);var nv=c(k(),1),{ValidatedToggleControl:hy}=J(rv.privateApis);function iv({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:f}=e,d=(0,ov.useCallback)(()=>{t(u({item:r,value:!l({item:r})}))},[t,u,r,l]);return(0,nv.jsx)(hy,{required:!!f.required,markWhenOptional:n,customValidity:we(f,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:d})}var av=c(K(),1),sv=c(z(),1);var lv=c(k(),1),{ValidatedTextareaControl:by}=J(av.privateApis);function uv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:u,description:f,setValue:d,isValid:m}=t,p=t.getValue({item:e}),g=(0,sv.useCallback)(b=>r(d({item:e,value:b})),[e,r,d]);return(0,lv.jsx)(by,{required:!!m.required,markWhenOptional:n,customValidity:we(m,a),label:l,placeholder:u,value:p??"",help:f,onChange:g,rows:s,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var _n=c(K(),1),cv=c(z(),1);var vs=c(k(),1),{ValidatedToggleGroupControl:xy}=J(_n.privateApis);function fv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,u=a({item:e}),f=(0,cv.useCallback)(g=>r(s({item:e,value:g})),[e,r,s]),{elements:d,isLoading:m}=pt({elements:t.elements,getElements:t.getElements});if(m)return(0,vs.jsx)(_n.Spinner,{});if(d.length===0)return null;let p=d.find(g=>g.value===u);return(0,vs.jsx)(xy,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:f,value:u,hideLabelFromVision:o,children:d.map(g=>(0,vs.jsx)(_n.__experimentalToggleGroupControlOption,{label:g.label,value:g.value},g.value))})}var hs=c(K(),1),bs=c(z(),1);var vi=c(k(),1),{ValidatedFormTokenField:wy}=J(hs.privateApis);function dv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:u,isValid:f}=t,d=l({item:e}),{elements:m,isLoading:p}=pt({elements:t.elements,getElements:t.getElements}),g=(0,bs.useMemo)(()=>Array.isArray(d)?d.map(x=>m?.find(y=>y.value===x)||{value:x,label:x}):[],[d,m]),b=(0,bs.useCallback)(x=>{let _=x.map(y=>typeof y=="object"&&"value"in y?y.value:y);r(u({item:e,value:_}))},[r,u,e]);return p?(0,vi.jsx)(hs.Spinner,{}):(0,vi.jsx)(wy,{required:!!f?.required,markWhenOptional:n,customValidity:we(f,i),label:o?void 0:a,value:g,onChange:b,placeholder:s,suggestions:m?.map(x=>x.value),__experimentalValidateInput:x=>t.isValid?.elements&&m?m.some(_=>_.value===x||_.label===x):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:x=>typeof x=="object"&&"label"in x?x.label:typeof x=="string"&&m&&m.find(y=>y.value===x)?.label||x,__experimentalRenderItem:({item:x})=>{if(typeof x=="string"&&m){let _=m.find(y=>y.value===x);return(0,vi.jsx)("span",{children:_?.label||x})}return(0,vi.jsx)("span",{children:x})}})}var yy={grad:.9,turn:360,rad:360/(2*Math.PI)},Nr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},rt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},yv=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},mv=function(e){return{r:Yt(e.r,0,255),g:Yt(e.g,0,255),b:Yt(e.b,0,255),a:Yt(e.a)}},mc=function(e){return{r:rt(e.r),g:rt(e.g),b:rt(e.b),a:rt(e.a,3)}},_y=/^#([0-9a-f]{3,8})$/i,xs=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},_v=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},Sv=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),u=i%6;return{r:255*[o,s,a,a,l,o][u],g:255*[l,o,o,s,a,a][u],b:255*[a,a,l,o,o,s][u],a:n}},pv=function(e){return{h:yv(e.h),s:Yt(e.s,0,100),l:Yt(e.l,0,100),a:Yt(e.a)}},gv=function(e){return{h:rt(e.h),s:rt(e.s),l:rt(e.l),a:rt(e.a,3)}},vv=function(e){return Sv((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},hi=function(e){return{h:(t=_v(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},Sy=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Cy=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Py=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ey=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hv={string:[[function(e){var t=_y.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?rt(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?rt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Py.exec(e)||Ey.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:mv({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=Sy.exec(e)||Cy.exec(e);if(!t)return null;var r,o,n=pv({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(yy[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return vv(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return Nr(t)&&Nr(r)&&Nr(o)?mv({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!Nr(t)||!Nr(r)||!Nr(o))return null;var a=pv({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return vv(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Nr(t)||!Nr(r)||!Nr(o))return null;var a=(function(s){return{h:yv(s.h),s:Yt(s.s,0,100),v:Yt(s.v,0,100),a:Yt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return Sv(a)},"hsv"]]},bv=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=mc(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?xs(rt(255*i)):"","#"+xs(r)+xs(o)+xs(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return mc(this.rgba)},e.prototype.toRgbString=function(){return t=mc(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return gv(hi(this.rgba))},e.prototype.toHslString=function(){return t=gv(hi(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=_v(this.rgba),{h:rt(t.h),s:rt(t.s),v:rt(t.v),a:rt(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(pc(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),lt(pc(this.rgba,-t))},e.prototype.grayscale=function(){return lt(pc(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),lt(xv(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),lt(xv(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}):rt(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=hi(this.rgba);return typeof t=="number"?lt({h:t,s:r.s,l:r.l,a:r.a}):rt(r.h)},e.prototype.isEqual=function(t){return this.toHex()===lt(t).toHex()},e})(),lt=function(e){return e instanceof wv?e:new wv(e)};var Sn=c(K(),1),vc=c(z(),1);var mo=c(k(),1),{ValidatedInputControl:Ay,Picker:Ty}=J(Sn.privateApis),Iy=({color:e,onColorChange:t})=>{let r=e&<(e).isValid()?e:"#ffffff";return(0,mo.jsx)(Sn.Dropdown,{renderToggle:({onToggle:o,isOpen:n})=>(0,mo.jsx)(Sn.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,mo.jsx)("button",{type:"button",onClick:o,style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",cursor:"pointer",outline:n?"2px solid #007cba":"none",outlineOffset:"2px",display:"flex",alignItems:"center",justifyContent:"center",padding:0,margin:0},"aria-label":"Open color picker"})}),renderContent:()=>(0,mo.jsx)("div",{style:{padding:"16px"},children:(0,mo.jsx)(Ty,{color:lt(r),onChange:t,enableAlpha:!0})})})};function Cv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:u,isValid:f}=t,d=t.getValue({item:e})||"",m=(0,vc.useCallback)(g=>{r(u({item:e,value:g.toHex()}))},[e,r,u]),p=(0,vc.useCallback)(g=>{r(u({item:e,value:g||""}))},[e,r,u]);return(0,mo.jsx)(Ay,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(f,i),label:a,placeholder:s,value:d,help:l,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,mo.jsx)(Iy,{color:d,onColorChange:m})})}var ys=c(K(),1),_s=c(z(),1),hc=c(X(),1);var ws=c(k(),1);function Pv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,_s.useState)(!1),l=(0,_s.useCallback)(()=>{s(u=>!u)},[]);return(0,ws.jsx)(fr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,ws.jsx)(ys.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,ws.jsx)(ys.Button,{icon:a?Nn:Dl,onClick:l,size:"small",label:a?(0,hc.__)("Hide password"):(0,hc.__)("Show password")})})})}function Ss(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var Ov=c(k(),1),Ev={array:dv,checkbox:Vg,color:Cv,combobox:Ng,datetime:Mg,date:Lg,email:zg,telephone:Wg,url:Gg,integer:qg,number:Kg,password:Pv,radio:Zg,select:Jg,text:tv,toggle:iv,textarea:uv,toggleGroup:fv};function Ry(e){return e&&typeof e=="object"&&typeof e.control=="string"}function Vy(e){let{control:t,...r}=e,o=Cs(t);return o===null?null:function(i){return(0,Ov.jsx)(o,{...i,config:r})}}function Av(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?Cs(e.Edit):Ry(e.Edit)?Vy(e.Edit):Ss(e)&&e.type!=="array"?Cs("select"):t===null?null:Cs(t)}function Cs(e){return Object.keys(Ev).includes(e)?Ev[e]:null}function ky(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var Tv=ky;var Ny=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Iv=Ny;var Dy=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},Rv=Dy;var kv=c(X(),1);function Ps({item:e,field:t}){let{elements:r,isLoading:o}=pt({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var Vv=c(k(),1);function Le({item:e,field:t}){return t.hasElements?(0,Vv.jsx)(Ps,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var dr=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function Be(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function mr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function pr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function gr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Ce(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function My({item:e,field:t}){return t.getValue({item:e})}var Pt=My;var Fy=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function Ly(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Fy.test(r)?(0,kv.__)("Value must be a valid email address."):null}var Nv={type:"email",render:Le,Edit:"email",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ve,ke,Zt,Qt,Jt,Ae,Te,ft,Je],format:{},getValueFormatted:Pt,validate:{required:Be,pattern:gr,minLength:mr,maxLength:pr,elements:Ce,custom:Ly}};var Dv=c(X(),1);var Cn=(e,t,r)=>r==="asc"?e-t:t-e;function Es(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function Os(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var Mv={separatorThousand:","};function By({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=Mv:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function jy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Dv.__)("Value must be an integer."):null}var Fv={type:"integer",render:Le,Edit:"integer",sort:Cn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,ke,Br,jr,Hr,zr,ht],validOperators:[Ve,ke,Br,jr,Hr,zr,ht,Ae,Te,ft,Je],format:Mv,getValueFormatted:By,validate:{required:Be,min:Es,max:Os,elements:Ce,custom:jy}};var Lv=c(X(),1);var Bv={separatorThousand:",",separatorDecimal:".",decimals:2};function Hy({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=Bv:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,u]=s.split("."),f=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?f:f+i+u}function zy(e){return e===""||e===void 0||e===null}function Wy(e,t){let r=t.getValue({item:e});return!zy(r)&&!Number.isFinite(r)?(0,Lv.__)("Value must be a number."):null}var jv={type:"number",render:Le,Edit:"number",sort:Cn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,ke,Br,jr,Hr,zr,ht],validOperators:[Ve,ke,Br,jr,Hr,zr,ht,Ae,Te,ft,Je],format:Bv,getValueFormatted:Hy,validate:{required:Be,min:Es,max:Os,elements:Ce,custom:Wy}};var Hv={type:"text",render:Le,Edit:"text",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ve,ke,Zt,Qt,Jt,Ae,Te,ft,Je],format:{},getValueFormatted:Pt,validate:{required:Be,pattern:gr,minLength:mr,maxLength:pr,elements:Ce}};var Lo=c(Mo(),1);var zv={datetime:(0,Lo.getSettings)().formats.datetime,weekStartsOn:(0,Lo.getSettings)().l10n.startOfWeek};function Gy({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=zv:o=t.format,(0,Lo.dateI18n)(o.datetime,(0,Lo.getDate)(r))}var Yy=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Wv={type:"datetime",render:Le,Edit:"datetime",sort:Yy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[qr,$r,Wr,Gr,Yr,Ur,bt,Ot],validOperators:[qr,$r,Wr,Gr,Yr,Ur,bt,Ot],format:zv,getValueFormatted:Gy,validate:{required:Be,elements:Ce}};var Bo=c(Mo(),1);var Gv={date:(0,Bo.getSettings)().formats.date,weekStartsOn:(0,Bo.getSettings)().l10n.startOfWeek};function Uy({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Gv:o=t.format,(0,Bo.dateI18n)(o.date,(0,Bo.getDate)(r))}var qy=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Yv={type:"date",render:Le,Edit:"date",sort:qy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[qr,$r,Wr,Gr,Yr,Ur,bt,Ot,ht],validOperators:[qr,$r,Wr,Gr,Yr,Ur,bt,Ot,ht],format:Gv,getValueFormatted:Uy,validate:{required:Be,elements:Ce}};var As=c(X(),1);function Uv(e,t){return t.getValue({item:e})===!0}function $y({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,As.__)("True"):r===!1?(0,As.__)("False"):""}function Ky(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,As.__)("Value must be true, false, or undefined"):null}var Xy=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},qv={type:"boolean",render:Le,Edit:"checkbox",sort:Xy,validate:{required:Uv,elements:Ce,custom:Ky},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,ke],validOperators:[Ve,ke],format:{},getValueFormatted:$y};var $v={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Pt,validate:{}};var bc=c(X(),1);function Kv(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Xv({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function Zy({item:e,field:t}){return Xv({item:e,field:t})}function Qy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,bc.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,bc.__)("Every value must be a string.")}var Jy=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},Zv={type:"array",render:Zy,Edit:"array",sort:Jy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ae,Te,ft,Je],format:{},getValueFormatted:Xv,validate:{required:Kv,elements:Ce,custom:Qy}};function e_({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Qv={type:"password",render:Le,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:e_,validate:{required:Be,pattern:gr,minLength:mr,maxLength:pr,elements:Ce}};var Jv={type:"telephone",render:Le,Edit:"telephone",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ve,ke,Zt,Qt,Jt,Ae,Te,ft,Je],format:{},getValueFormatted:Pt,validate:{required:Be,pattern:gr,minLength:mr,maxLength:pr,elements:Ce}};var eh=c(X(),1);var Pn=c(k(),1);function t_({item:e,field:t}){if(t.hasElements)return(0,Pn.jsx)(Ps,{item:e,field:t});let r=Pt({item:e,field:t});return!r||!lt(r).isValid()?r:(0,Pn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,Pn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,Pn.jsx)("span",{children:r})]})}function r_(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!lt(r).isValid()?(0,eh.__)("Value must be a valid color."):null}var o_=(e,t,r)=>{let o=lt(e),n=lt(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},th={type:"color",render:t_,Edit:"color",sort:o_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ve,ke,Ae,Te],format:{},getValueFormatted:Pt,validate:{required:Be,elements:Ce,custom:r_}};var rh={type:"url",render:Le,Edit:"url",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Te],validOperators:[Ve,ke,Zt,Qt,Jt,Ae,Te,ft,Je],format:{},getValueFormatted:Pt,validate:{required:Be,pattern:gr,minLength:mr,maxLength:pr,elements:Ce}};var n_=(e,t,r)=>typeof e=="number"&&typeof t=="number"?Cn(e,t,r):dr(e,t,r),oh={render:Le,Edit:null,sort:n_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,ke],validOperators:Qp(),format:{},getValueFormatted:Pt,validate:{required:Be,elements:Ce}};function nh(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let u=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:u}}function ih(e){return e.validOperators.reduce((t,r)=>{let o=Fo(r);return o?.filter&&(t[r]=o.filter),t},{})}function i_(e,t){return{...t.format,...e.format}}var ah=i_;function a_(e){let t=[Nv,Fv,jv,Hv,Wv,Yv,qv,$v,Zv,Qv,Jv,th,rh].find(r=>r?.type===e);return t||oh}function Ts(e){return e.map(t=>{let r=a_(t.type),o=t.getValue||Iv(t.id),n=function(i,a,s){let l=o({item:i}),u=o({item:a});return t.sort?t.sort(l,u,s):r.sort(l,u,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||Rv(t.id),elements:t.elements,getElements:t.getElements,hasElements:Ss(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:Av(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:nh(t,r),filterBy:Tv(t,r.defaultOperators,r.validOperators),filter:ih(r),format:ah(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var ut=c(k(),1),s_=e=>e.id,l_=()=>!0,u_=[],c_=eo.filter(e=>!e.isPicker);function f_({header:e,search:t=!0,searchLabel:r=void 0}){return(0,ut.jsxs)(ut.Fragment,{children:[(0,ut.jsxs)(L,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,ut.jsxs)(L,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,ut.jsx)(tc,{label:r}),(0,ut.jsx)(es,{})]}),(0,ut.jsxs)(L,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,ut.jsx)(Ag,{}),e]})]}),(0,ut.jsx)(ts,{className:"dataviews-filters__container"}),(0,ut.jsx)(Ju,{}),(0,ut.jsx)(ec,{})]})}function d_({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=u_,data:a,getItemId:s=s_,getItemLevel:l,isLoading:u=!1,paginationInfo:f,defaultLayouts:d,selection:m,onChangeSelection:p,onClickItem:g,renderItemLink:b,isItemClickable:x=l_,header:_,children:y,config:E={perPageSizes:[10,20,50,100]},empty:V}){let{infiniteScrollHandler:A}=f,R=(0,Et.useRef)(null),[D,P]=(0,Et.useState)(0),S=(0,Is.useResizeObserver)(de=>{P(de[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[N,M]=(0,Et.useState)([]),I=m===void 0||p===void 0,v=I?N:m,[w,T]=(0,Et.useState)(null);function h(de){let Ee=typeof de=="function"?de(v):de;I&&M(Ee),p&&p(Ee)}let C=(0,Et.useMemo)(()=>Ts(r),[r]),F=(0,Et.useMemo)(()=>v.filter(de=>a.some(Ee=>s(Ee)===de)),[v,a,s]),O=ci(C,e),W=(0,Et.useMemo)(()=>(O||[]).some(de=>de.isPrimary||de.isLocked),[O]),[U,Ze]=(0,Et.useState)(W);(0,Et.useEffect)(()=>{W&&!U&&Ze(!0)},[W,U]),(0,Et.useEffect)(()=>{if(!e.infiniteScrollEnabled||!R.current)return;let de=(0,Is.throttle)(Y=>{let Ie=Y.target,Qe=Ie.scrollTop,Ut=Ie.scrollHeight,Mr=Ie.clientHeight;Qe+Mr>=Ut-100&&A?.()},100),Ee=R.current;return Ee.addEventListener("scroll",de),()=>{Ee.removeEventListener("scroll",de),de.cancel()}},[A,e.infiniteScrollEnabled]);let ot=(0,Et.useMemo)(()=>Object.fromEntries(Object.entries(d).filter(([de])=>c_.some(Ee=>Ee.type===de))),[d]);return ot[e.type]?(0,ut.jsx)($.Provider,{value:{view:e,onChangeView:t,fields:C,actions:i,data:a,isLoading:u,paginationInfo:f,selection:F,onChangeSelection:h,openedFilter:w,setOpenedFilter:T,getItemId:s,getItemLevel:l,isItemClickable:x,onClickItem:g,renderItemLink:b,containerWidth:D,containerRef:R,resizeObserverRef:S,defaultLayouts:ot,filters:O,isShowingFilter:U,setIsShowingFilter:Ze,config:E,empty:V,hasInfiniteScrollHandler:!!A},children:(0,ut.jsx)("div",{className:"dataviews-wrapper",ref:R,children:y??(0,ut.jsx)(f_,{header:_,search:o,searchLabel:n})})}):null}var Xt=d_;Xt.BulkActionToolbar=na;Xt.Filters=di;Xt.FiltersToggled=ts;Xt.FiltersToggle=es;Xt.Layout=Ju;Xt.LayoutSwitcher=nc;Xt.Pagination=tu;Xt.Search=tc;Xt.ViewConfig=ic;Xt.Footer=ec;var xc=Xt;var ch=c(zu(),1),fh=c(lh(),1);function uh(e=""){return(0,ch.default)(e.trim().toLowerCase())}var m_=[];function wc(e,t,r){if(!e)return{data:m_,paginationInfo:{totalItems:0,totalPages:0}};let o=Ts(r),n=[...e];if(t.search){let u=uh(t.search);n=n.filter(f=>o.filter(d=>d.enableGlobalSearch).some(d=>{let m=d.getValue({item:f});return(Array.isArray(m)?m:[m]).some(g=>uh(String(g)).includes(u))}))}t.filters&&t.filters?.length>0&&t.filters.forEach(u=>{let f=o.find(d=>d.id===u.field);if(f){u.operator===Je&&(0,fh.default)("The 'isNotAll' filter operator",{since:"7.0",alternative:"'isNone'"});let d=f.filter[u.operator];d&&(n=n.filter(m=>d(m,f,u.value)))}});let i=t.sort?.field?o.find(u=>u.enableSorting!==!1&&u.id===t.sort?.field):null,a=t.groupBy?.field?o.find(u=>u.enableSorting!==!1&&u.id===t.groupBy?.field):null;(i||a)&&n.sort((u,f)=>{if(a){let d=a.sort(u,f,t.groupBy?.direction??"asc");if(d!==0)return d}return i?i.sort(u,f,t.sort?.direction??"desc"):0});let s=n.length,l=1;if(t.page!==void 0&&t.perPage!==void 0){let u=(t.page-1)*t.perPage;s=n?.length||0,l=Math.ceil(s/t.perPage),n=n?.slice(u,u+t.perPage)}return{data:n,paginationInfo:{totalItems:s,totalPages:l}}}var dh=c(z(),1),mh=c(k(),1),ph=(0,dh.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},i)=>(0,mh.jsx)(o,{ref:i,className:q("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));ph.displayName="NavigableRegion";var gh=ph;var po=c(K(),1);var vh=c(K(),1),{Fill:hh,Slot:bh}=(0,vh.createSlotFill)("SidebarToggle");var Dr=c(k(),1);function xh({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Dr.jsxs)(po.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Dr.jsxs)(po.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Dr.jsxs)(po.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Dr.jsx)(bh,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Dr.jsx)(po.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,Dr.jsx)(po.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Dr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var bi=c(k(),1);function wh({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:s=!1,showSidebarToggle:l=!0}){let u=q("admin-ui-page",i);return(0,bi.jsxs)(gh,{className:u,ariaLabel:r,children:[(r||e||t)&&(0,bi.jsx)(xh,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:l}),s?(0,bi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}wh.SidebarToggleFill=hh;var yc=wh;var Tc=c(Rs()),xi=c(K()),Ic=c(qt()),Ft=c(z()),qh=c(Sh()),$h=c(Vs()),Fs=c(X());var Ph=c(Fl()),{lock:T3,unlock:vr}=(0,Ph.__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 ks=c(X()),Eh="grid",p_="table",Oh={type:Eh,perPage:20,sort:{field:"title",direction:"asc"},filters:[],fields:["sync-status"],layout:{badgeFields:["sync-status"]},titleField:"title",mediaField:"preview"},_c=[{slug:"all",label:(0,ks.__)("All patterns")},{slug:"my-patterns",label:(0,ks.__)("My patterns")},{slug:"registered",label:(0,ks.__)("Registered")}],Ah={[p_]:{},[Eh]:{layout:{badgeFields:["sync-status"]}}};var Th=c(X());import{Preview as g_}from"@wordpress/lazy-editor";function v_({item:e}){return React.createElement(g_,{blocks:e.blocks,content:e.content,description:e.description})}var Ih={label:(0,Th.__)("Preview"),id:"preview",render:v_,enableSorting:!1};var jo=c(X()),kh=c(Vs());var{PATTERN_SYNC_TYPES:Rh}=vr(kh.privateApis),h_="is",Vh=[{value:Rh.full,label:(0,jo._x)("Synced","pattern (singular)"),description:(0,jo.__)("Patterns that are kept in sync across the site.")},{value:Rh.unsynced,label:(0,jo._x)("Not synced","pattern (singular)"),description:(0,jo.__)("Patterns that can be changed freely without affecting the site.")}],Nh={label:(0,jo.__)("Sync status"),id:"sync-status",render:({item:e})=>{let t=e.syncStatus;return React.createElement("span",{className:`routes-pattern-list__field-sync-status-${t}`},Vh.find(({value:r})=>r===t)?.label)},elements:Vh,filterBy:{operators:[h_],isPrimary:!0},enableSorting:!1};var Dh=c(X()),Ns=c(qt()),Ds=c(Rs()),Sc=c(z()),b_="is";function x_({item:e}){let t=(0,Ns.useSelect)(o=>o(Ds.store).getBlockPatternCategories(),[]),r=(0,Sc.useMemo)(()=>!e.categories||!Array.isArray(e.categories)?[]:e.categories.map(o=>{let n=t?.find(i=>i.name===o);return n?n.label||n.name:null}).filter(Boolean),[e.categories,t]);return r.length===0?React.createElement("span",{className:"pattern-category-field__empty"},"\u2014"):React.createElement("span",{className:"pattern-category-field"},r.join(", "))}function w_(){let e=(0,Ns.useSelect)(r=>r(Ds.store).getUserPatternCategories(),[]),t=(0,Ns.useSelect)(r=>r(Ds.store).getBlockPatternCategories(),[]);return(0,Sc.useMemo)(()=>{let r=new Map;return e?.forEach(o=>{r.has(o.name)||r.set(o.name,{value:o.name,label:o.label||o.name})}),t?.forEach(o=>{r.has(o.name)||r.set(o.name,{value:o.name,label:o.label||o.name})}),Array.from(r.values()).sort((o,n)=>o.label.localeCompare(n.label))},[e,t])}function Mh(){let e=w_();return{label:(0,Dh.__)("Category"),id:"category",render:x_,elements:e,getValue:({item:t})=>t.categories,filterBy:{operators:[b_],isPrimary:!0},enableSorting:!1}}var Ho=c(qt()),hr=c(Rs()),Cc=c(z()),Hh=c(Vs()),zh=c(Lh());var Bh=(e,t,r)=>t===r.findIndex(o=>e.name===o.name);var{PATTERN_TYPES:br,PATTERN_SYNC_TYPES:Wh,EXCLUDED_PATTERN_SOURCES:y_,PATTERN_DEFAULT_CATEGORY:go}=vr(Hh.privateApis),{extractWords:__,getNormalizedSearchTerms:Gh,normalizeString:jh}=vr(zh.privateApis);function S_(e){return{id:e.name,title:e.title,content:e.content,keywords:e.keywords||[],type:br.theme,categories:e.categories||[],syncStatus:Wh.unsynced,description:e.description||""}}function C_(e,t){let r=[];e.wp_pattern_category&&Array.isArray(e.wp_pattern_category)&&e.wp_pattern_category.forEach(n=>{let i=t?.find(a=>a.id===n);i&&r.push(i.name)});let o=e.id;return{id:e.name||e.id.toString(),_recordId:o,keywords:[],type:br.user,categories:r,syncStatus:e.wp_pattern_sync_status||Wh.full,title:typeof e.title=="string"?e.title:e.title.raw,content:typeof e.content=="string"?e.content:e.content.raw,description:e.excerpt?.raw||"",blocks:e.blocks}}var P_=(e,t)=>e.filter(r=>!Gh(t).some(o=>o.includes(r)));function E_(e,t,r){let{categoryId:o,hasCategory:n,onlyFilterByCategory:i}=r,a=o===go||o==="my-patterns"&&e.type===br.user||n&&n(e,o||"")?1:0;if(!a||i)return a;let s=jh(t),l=jh(e.title);if(s===l)a+=30;else if(l.startsWith(s))a+=20;else{let u=[e.id,e.title,e.description,...e.keywords].join(" "),f=__(s);P_(f,u).length===0&&(a+=10)}return a}function Ms(e=[],t="",r={}){let o=Gh(t),n=r.categoryId!==go&&!o.length,i={...r,onlyFilterByCategory:n},a=n?0:1,s=e.map(l=>[l,E_(l,t,i)]).filter(([,l])=>l>a);return o.length===0?s.map(([l])=>l):(s.sort(([,l],[,u])=>u-l),s.map(([l])=>l))}var Pc=(0,Ho.createSelector)(e=>{let{getBlockPatterns:t}=e(hr.store),{isResolving:r}=e(hr.store);return{patterns:(t()||[]).filter(i=>!y_.includes(i.source)).filter(Bh).filter(i=>i.inserter!==!1).map(S_),isResolving:r("getBlockPatterns")}},e=>[e(hr.store).getBlockPatterns(),e(hr.store).isResolving("getBlockPatterns")]),Ec=(0,Ho.createSelector)((e,t=void 0,r="")=>{let{getEntityRecords:o,isResolving:n,getUserPatternCategories:i}=e(hr.store),a={per_page:-1},s=o("postType",br.user,a),l=i(),u=(s??[]).map(d=>C_(d,l)),f=n("getEntityRecords",["postType",br.user,a]);return t&&(u=u.filter(d=>d.syncStatus===t)),u=Ms(u,r,{categoryId:go,hasCategory:()=>!0}),{patterns:u,isResolving:f,categories:l}},e=>[e(hr.store).getEntityRecords("postType",br.user,{per_page:-1}),e(hr.store).isResolving("getEntityRecords",["postType",br.user,{per_page:-1}]),e(hr.store).getUserPatternCategories()]),O_=(0,Ho.createSelector)((e,t,r,o="")=>{let{patterns:n,isResolving:i}=Pc(e),{patterns:a,isResolving:s}=Ec(e),l=[...n||[],...a||[]];return r&&(l=l.filter(u=>u.syncStatus===r)),t&&t!==go?l=Ms(l,o,{categoryId:t,hasCategory:(u,f)=>u.categories?.includes(f)}):l=Ms(l,o,{categoryId:go,hasCategory:()=>!0}),{patterns:l,isResolving:i||s}},e=>[Pc(e),Ec(e)]);function Yh(e){let t=(0,Cc.useMemo)(()=>e?.filter(o=>o.type!==br.theme).map(o=>[o.type,o._recordId,o.id])??[],[e]),r=(0,Ho.useSelect)(o=>{let{getEntityRecordPermissions:n}=vr(o(hr.store));return t.reduce((i,[a,s,l])=>(i[l]=n("postType",a,s),i),{})},[t]);return(0,Cc.useMemo)(()=>e?.map(o=>({...o,permissions:r?.[o.id]??{}}))??[],[e,r])}var A_=(e,t,{search:r="",syncStatus:o}={})=>(0,Ho.useSelect)(n=>{if(e===br.user){let i=Ec(n,o,r),{patterns:a}=i;return t&&t!==go&&(a=a.filter(s=>s.categories.includes(t))),{patterns:a,isResolving:i.isResolving}}else if(e===br.theme){let i=Pc(n),{patterns:a}=i;return t&&t!==go&&(a=a.filter(s=>s.categories.includes(t))),a=Ms(a,r,{categoryId:t||go,hasCategory:()=>!0}),{patterns:a,isResolving:i.isResolving}}return O_(n,t,o,r)},[t,e,r,o]),Uh=A_;if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='2d52a92b3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","2d52a92b3c"),e.appendChild(document.createTextNode(":root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.patterns-menu-items__convert-modal{z-index:1000001}.patterns-menu-items__convert-modal [role=dialog]>[role=document]{width:350px}.patterns-menu-items__convert-modal .patterns-menu-items__convert-modal-categories{position:relative}.patterns-menu-items__convert-modal .components-form-token-field__suggestions-list:not(:empty){background-color:#fff;border:1px solid var(--wp-admin-theme-color);border-bottom-left-radius:2px;border-bottom-right-radius:2px;box-shadow:0 0 .5px .5px var(--wp-admin-theme-color);box-sizing:border-box;left:-1px;max-height:96px;min-width:auto;position:absolute;width:calc(100% + 2px);z-index:1}.patterns-create-modal__name-input input[type=text]{margin:0}.patterns-rename-pattern-category-modal__validation-message{color:#cc1818}@media (min-width:782px){.patterns-rename-pattern-category-modal__validation-message{width:320px}}.pattern-overrides-control__allow-overrides-button{justify-content:center;width:100%}.routes-pattern-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}.dataviews-view-grid__badge-fields .dataviews-view-grid__field-value:has(.routes-pattern-list__field-sync-status-fully){background:rgba(var(--wp-block-synced-color--rgb),.04);color:var(--wp-block-synced-color)}")),document.head.appendChild(e)}var{usePostActions:N_,patternTitleField:D_}=vr(qh.privateApis),{Tabs:Oc}=vr(xi.privateApis),{PATTERN_TYPES:Ac,CreatePatternModal:M_}=vr($h.privateApis);function F_(){let e=k_(),{type:t="all"}=T_({from:"/patterns/list/$type"}),r=I_(),o=R_({from:"/patterns/list/$type"}),n=(0,Ic.useSelect)(C=>C(Tc.store).getPostType("wp_block"),[]),i=n?.labels,a=(0,Ic.useSelect)(C=>C(Tc.store).canUser("create",{kind:"postType",name:"wp_block"}),[]),[s,l]=(0,Ft.useState)(!1),u=(0,Ft.useCallback)(C=>{r({search:{...o,...C}})},[o,r]),{view:f,isModified:d,updateView:m,resetToDefault:p}=Ys({kind:"postType",name:"wp_block",slug:"default-new",defaultView:Oh,queryParams:o,onChangeQueryParams:u}),g=()=>{p(),e()},b=C=>{m(C),C.type!==f.type&&e()},x=(0,Ft.useMemo)(()=>f.filters?.find(F=>F.field==="category")?.value||"all-patterns",[f.filters]),_=(0,Ft.useMemo)(()=>f.filters?.find(F=>F.field==="sync-status")?.value,[f.filters]),y=(0,Ft.useMemo)(()=>t==="my-patterns"?Ac.user:t==="registered"?Ac.theme:null,[t]),{patterns:E,isResolving:V}=Uh(y,x,{search:f.search,syncStatus:_}),A=Yh(E),R=Mh(),D=(0,Ft.useMemo)(()=>{let C=[Ih,D_,R];return(t==="my-patterns"||t==="all")&&C.push(Nh),C},[t,R]),{data:P,paginationInfo:S}=(0,Ft.useMemo)(()=>{let C={...f};return delete C.search,C.filters=[],wc(A,C,D)},[A,f,D]),{totalItems:N,totalPages:M}=S,I=(0,Ft.useCallback)(C=>{let F=C.map(U=>U.id),O=o.postIds||[],W=O.filter(U=>!F.includes(U));W.length!==O.length?r({search:{...o,postIds:W.length>0?W:void 0}}):e()},[e,o,r]),v=N_({postType:"wp_block",context:"list",onActionPerformed:(C,F)=>{(C==="move-to-trash"||C==="permanently-delete")&&I(F)}}),w=(0,Ft.useMemo)(()=>[...v?.flatMap(C=>C.id==="view-post-revisions"?[]:[C])],[v]),T=(0,Ft.useCallback)(C=>{r({to:`/patterns/list/${C}`})},[r]);if(!n)return null;let h=o.postIds??[];return f.type==="list"&&h.length===0&&P?.length>0&&h.push(P[0].id),f.type==="list"&&h.splice(1),React.createElement(yc,{title:(0,Fs.__)("Patterns"),subTitle:(0,Fs.__)("Reusable design elements for your site. Create once, use everywhere."),className:"pattern-page",actions:React.createElement(React.Fragment,null,d&&React.createElement(xi.Button,{variant:"tertiary",size:"compact",onClick:g},(0,Fs.__)("Reset view")),i?.add_new_item&&a&&React.createElement(xi.Button,{variant:"primary",onClick:()=>l(!0),size:"compact"},i.add_new_item)),hasPadding:!1},_c.length>1&&React.createElement("div",{className:"routes-pattern-list__tabs-wrapper"},React.createElement(Oc,{onSelect:T,selectedTabId:t??"all"},React.createElement(Oc.TabList,null,_c.map(C=>React.createElement(Oc.Tab,{tabId:C.slug,key:C.slug},C.label))))),React.createElement(xc,{data:P,fields:D,view:f,onChangeView:b,actions:w,isLoading:V,paginationInfo:{totalItems:N,totalPages:M},defaultLayouts:Ah,selection:h,onChangeSelection:C=>{r({search:{...o,postIds:C.length>0?C:void 0,edit:C.length===0?void 0:o.edit}})},isItemClickable:C=>C.type!==Ac.theme,renderItemLink:({item:C,...F})=>React.createElement(V_,{to:`/types/wp_block/edit/${encodeURIComponent(C.id)}`,...F,onClick:O=>{O.stopPropagation()}})}),s&&React.createElement(M_,{onClose:()=>l(!1),onSuccess:({pattern:C})=>{l(!1),r({to:`/types/wp_block/edit/${encodeURIComponent(C.id)}`})},content:[]}))}var L_=F_;export{L_ 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. + *) +*/ diff --git a/src/wp-includes/build/routes/pattern-list/route.js b/src/wp-includes/build/routes/pattern-list/route.js new file mode 100644 index 0000000000000..7dc2490cfb5ac --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/route.js @@ -0,0 +1,41 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/pattern-list/route.ts +var import_i18n = __toESM(require_i18n()); +var route = { + title: () => (0, import_i18n.__)("Patterns") +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/pattern-list/route.min.asset.php b/src/wp-includes/build/routes/pattern-list/route.min.asset.php new file mode 100644 index 0000000000000..bd581231d4872 --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/route.min.asset.php @@ -0,0 +1 @@ + array('wp-i18n'), 'version' => '949d84bd65bdaf6766db'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/pattern-list/route.min.js b/src/wp-includes/build/routes/pattern-list/route.min.js new file mode 100644 index 0000000000000..81119bc0dc217 --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/route.min.js @@ -0,0 +1 @@ +var m=Object.create;var n=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var a=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty;var d=(o,t)=>()=>(t||o((t={exports:{}}).exports,t),t.exports);var f=(o,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of _(t))!c.call(o,e)&&e!==r&&n(o,e,{get:()=>t[e],enumerable:!(i=x(t,e))||i.enumerable});return o};var l=(o,t,r)=>(r=o!=null?m(a(o)):{},f(t||!o||!o.__esModule?n(r,"default",{value:o,enumerable:!0}):r,o));var s=d((P,p)=>{p.exports=window.wp.i18n});var w=l(s()),b={title:()=>(0,w.__)("Patterns")};export{b as route}; diff --git a/src/wp-includes/build/routes/pattern/route.js b/src/wp-includes/build/routes/pattern/route.js new file mode 100644 index 0000000000000..e02a368d628a3 --- /dev/null +++ b/src/wp-includes/build/routes/pattern/route.js @@ -0,0 +1,16 @@ +// routes/pattern/route.ts +import { redirect } from "@wordpress/route"; +var route = { + beforeLoad: () => { + throw redirect({ + throw: true, + to: "/patterns/list/$type", + params: { + type: "all" + } + }); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/pattern/route.min.asset.php b/src/wp-includes/build/routes/pattern/route.min.asset.php new file mode 100644 index 0000000000000..3503a313e136b --- /dev/null +++ b/src/wp-includes/build/routes/pattern/route.min.asset.php @@ -0,0 +1 @@ + array(), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '0ad107785a0d22f8e27c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/pattern/route.min.js b/src/wp-includes/build/routes/pattern/route.min.js new file mode 100644 index 0000000000000..8a1332ccec243 --- /dev/null +++ b/src/wp-includes/build/routes/pattern/route.min.js @@ -0,0 +1 @@ +import{redirect as t}from"@wordpress/route";var e={beforeLoad:()=>{throw t({throw:!0,to:"/patterns/list/$type",params:{type:"all"}})}};export{e as route}; diff --git a/src/wp-includes/build/routes/post-edit/route.js b/src/wp-includes/build/routes/post-edit/route.js new file mode 100644 index 0000000000000..76d77c639f129 --- /dev/null +++ b/src/wp-includes/build/routes/post-edit/route.js @@ -0,0 +1,111 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/html-entities +var require_html_entities = __commonJS({ + "package-external:@wordpress/html-entities"(exports, module) { + module.exports = window.wp.htmlEntities; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/post-edit/route.ts +var import_data = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_html_entities = __toESM(require_html_entities()); +var import_i18n = __toESM(require_i18n()); +import { notFound } from "@wordpress/route"; +var route = { + beforeLoad: async ({ + params + }) => { + const postId = parseInt(params.id, 10); + if (Number.isNaN(postId)) { + throw notFound(); + } + try { + const [postType, post] = await Promise.all([ + (0, import_data.resolveSelect)(import_core_data.store).getPostType(params.type), + (0, import_data.resolveSelect)(import_core_data.store).getEntityRecord( + "postType", + params.type, + postId + ) + ]); + if (!postType || !post) { + throw notFound(); + } + } catch { + throw notFound(); + } + }, + title: async ({ + params + }) => { + const post = await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecord( + "postType", + params.type, + params.id + ); + if (post?.title?.rendered) { + return (0, import_html_entities.decodeEntities)(post.title.rendered); + } + const postType = await (0, import_data.resolveSelect)(import_core_data.store).getPostType( + params.type + ); + return postType?.labels?.edit_item || (0, import_i18n.__)("Edit"); + }, + async canvas(context) { + const { params } = context; + return { + postType: params.type, + postId: params.id + }; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/post-edit/route.min.asset.php b/src/wp-includes/build/routes/post-edit/route.min.asset.php new file mode 100644 index 0000000000000..dc0361fd41100 --- /dev/null +++ b/src/wp-includes/build/routes/post-edit/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-html-entities', 'wp-i18n'), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'd16f0eda0f8463b63fe9'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/post-edit/route.min.js b/src/wp-includes/build/routes/post-edit/route.min.js new file mode 100644 index 0000000000000..34f87712ed783 --- /dev/null +++ b/src/wp-includes/build/routes/post-edit/route.min.js @@ -0,0 +1 @@ +var E=Object.create;var y=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var n=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of I(e))!P.call(t,r)&&r!==o&&y(t,r,{get:()=>e[r],enumerable:!(s=b(e,r))||s.enumerable});return t};var d=(t,e,o)=>(o=t!=null?E(N(t)):{},_(e||!t||!t.__esModule?y(o,"default",{value:t,enumerable:!0}):o,t));var w=n((R,c)=>{c.exports=window.wp.data});var g=n((S,m)=>{m.exports=window.wp.coreData});var f=n((D,l)=>{l.exports=window.wp.htmlEntities});var u=n((F,T)=>{T.exports=window.wp.i18n});var i=d(w()),p=d(g()),h=d(f()),x=d(u());import{notFound as a}from"@wordpress/route";var j={beforeLoad:async({params:t})=>{let e=parseInt(t.id,10);if(Number.isNaN(e))throw a();try{let[o,s]=await Promise.all([(0,i.resolveSelect)(p.store).getPostType(t.type),(0,i.resolveSelect)(p.store).getEntityRecord("postType",t.type,e)]);if(!o||!s)throw a()}catch{throw a()}},title:async({params:t})=>{let e=await(0,i.resolveSelect)(p.store).getEntityRecord("postType",t.type,t.id);return e?.title?.rendered?(0,h.decodeEntities)(e.title.rendered):(await(0,i.resolveSelect)(p.store).getPostType(t.type))?.labels?.edit_item||(0,x.__)("Edit")},async canvas(t){let{params:e}=t;return{postType:e.type,postId:e.id}}};export{j as route}; diff --git a/src/wp-includes/build/routes/post-list/content.js b/src/wp-includes/build/routes/post-list/content.js new file mode 100644 index 0000000000000..0fb8d2da6910c --- /dev/null +++ b/src/wp-includes/build/routes/post-list/content.js @@ -0,0 +1,17220 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// vendor-external:react +var require_react = __commonJS({ + "vendor-external:react"(exports, module) { + module.exports = window.React; + } +}); + +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + +// 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(subscribe2, getSnapshot) { + didWarnOld18Alpha || void 0 === React9.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 = useState22({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect2( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe2, value, getSnapshot] + ); + useEffect17( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe2(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe2] + ); + useDebugValue(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(subscribe2, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React9 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState22 = React9.useState, useEffect17 = React9.useEffect, useLayoutEffect2 = React9.useLayoutEffect, useDebugValue = React9.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 !== React9.useSyncExternalStore ? React9.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(); + } + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; + } +}); + +// package-external:@wordpress/keycodes +var require_keycodes = __commonJS({ + "package-external:@wordpress/keycodes"(exports, module) { + module.exports = window.wp.keycodes; + } +}); + +// node_modules/remove-accents/index.js +var require_remove_accents = __commonJS({ + "node_modules/remove-accents/index.js"(exports, module) { + var characterMap = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\u1EA4": "A", + "\u1EAE": "A", + "\u1EB2": "A", + "\u1EB4": "A", + "\u1EB6": "A", + "\xC6": "AE", + "\u1EA6": "A", + "\u1EB0": "A", + "\u0202": "A", + "\u1EA2": "A", + "\u1EA0": "A", + "\u1EA8": "A", + "\u1EAA": "A", + "\u1EAC": "A", + "\xC7": "C", + "\u1E08": "C", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\u1EBE": "E", + "\u1E16": "E", + "\u1EC0": "E", + "\u1E14": "E", + "\u1E1C": "E", + "\u0206": "E", + "\u1EBA": "E", + "\u1EBC": "E", + "\u1EB8": "E", + "\u1EC2": "E", + "\u1EC4": "E", + "\u1EC6": "E", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\u1E2E": "I", + "\u020A": "I", + "\u1EC8": "I", + "\u1ECA": "I", + "\xD0": "D", + "\xD1": "N", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\u1ED0": "O", + "\u1E4C": "O", + "\u1E52": "O", + "\u020E": "O", + "\u1ECE": "O", + "\u1ECC": "O", + "\u1ED4": "O", + "\u1ED6": "O", + "\u1ED8": "O", + "\u1EDC": "O", + "\u1EDE": "O", + "\u1EE0": "O", + "\u1EDA": "O", + "\u1EE2": "O", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\u1EE6": "U", + "\u1EE4": "U", + "\u1EEC": "U", + "\u1EEE": "U", + "\u1EF0": "U", + "\xDD": "Y", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\u1EA5": "a", + "\u1EAF": "a", + "\u1EB3": "a", + "\u1EB5": "a", + "\u1EB7": "a", + "\xE6": "ae", + "\u1EA7": "a", + "\u1EB1": "a", + "\u0203": "a", + "\u1EA3": "a", + "\u1EA1": "a", + "\u1EA9": "a", + "\u1EAB": "a", + "\u1EAD": "a", + "\xE7": "c", + "\u1E09": "c", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\u1EBF": "e", + "\u1E17": "e", + "\u1EC1": "e", + "\u1E15": "e", + "\u1E1D": "e", + "\u0207": "e", + "\u1EBB": "e", + "\u1EBD": "e", + "\u1EB9": "e", + "\u1EC3": "e", + "\u1EC5": "e", + "\u1EC7": "e", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\u1E2F": "i", + "\u020B": "i", + "\u1EC9": "i", + "\u1ECB": "i", + "\xF0": "d", + "\xF1": "n", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\u1ED1": "o", + "\u1E4D": "o", + "\u1E53": "o", + "\u020F": "o", + "\u1ECF": "o", + "\u1ECD": "o", + "\u1ED5": "o", + "\u1ED7": "o", + "\u1ED9": "o", + "\u1EDD": "o", + "\u1EDF": "o", + "\u1EE1": "o", + "\u1EDB": "o", + "\u1EE3": "o", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\u1EE7": "u", + "\u1EE5": "u", + "\u1EED": "u", + "\u1EEF": "u", + "\u1EF1": "u", + "\xFD": "y", + "\xFF": "y", + "\u0100": "A", + "\u0101": "a", + "\u0102": "A", + "\u0103": "a", + "\u0104": "A", + "\u0105": "a", + "\u0106": "C", + "\u0107": "c", + "\u0108": "C", + "\u0109": "c", + "\u010A": "C", + "\u010B": "c", + "\u010C": "C", + "\u010D": "c", + "C\u0306": "C", + "c\u0306": "c", + "\u010E": "D", + "\u010F": "d", + "\u0110": "D", + "\u0111": "d", + "\u0112": "E", + "\u0113": "e", + "\u0114": "E", + "\u0115": "e", + "\u0116": "E", + "\u0117": "e", + "\u0118": "E", + "\u0119": "e", + "\u011A": "E", + "\u011B": "e", + "\u011C": "G", + "\u01F4": "G", + "\u011D": "g", + "\u01F5": "g", + "\u011E": "G", + "\u011F": "g", + "\u0120": "G", + "\u0121": "g", + "\u0122": "G", + "\u0123": "g", + "\u0124": "H", + "\u0125": "h", + "\u0126": "H", + "\u0127": "h", + "\u1E2A": "H", + "\u1E2B": "h", + "\u0128": "I", + "\u0129": "i", + "\u012A": "I", + "\u012B": "i", + "\u012C": "I", + "\u012D": "i", + "\u012E": "I", + "\u012F": "i", + "\u0130": "I", + "\u0131": "i", + "\u0132": "IJ", + "\u0133": "ij", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u1E30": "K", + "\u1E31": "k", + "K\u0306": "K", + "k\u0306": "k", + "\u0139": "L", + "\u013A": "l", + "\u013B": "L", + "\u013C": "l", + "\u013D": "L", + "\u013E": "l", + "\u013F": "L", + "\u0140": "l", + "\u0141": "l", + "\u0142": "l", + "\u1E3E": "M", + "\u1E3F": "m", + "M\u0306": "M", + "m\u0306": "m", + "\u0143": "N", + "\u0144": "n", + "\u0145": "N", + "\u0146": "n", + "\u0147": "N", + "\u0148": "n", + "\u0149": "n", + "N\u0306": "N", + "n\u0306": "n", + "\u014C": "O", + "\u014D": "o", + "\u014E": "O", + "\u014F": "o", + "\u0150": "O", + "\u0151": "o", + "\u0152": "OE", + "\u0153": "oe", + "P\u0306": "P", + "p\u0306": "p", + "\u0154": "R", + "\u0155": "r", + "\u0156": "R", + "\u0157": "r", + "\u0158": "R", + "\u0159": "r", + "R\u0306": "R", + "r\u0306": "r", + "\u0212": "R", + "\u0213": "r", + "\u015A": "S", + "\u015B": "s", + "\u015C": "S", + "\u015D": "s", + "\u015E": "S", + "\u0218": "S", + "\u0219": "s", + "\u015F": "s", + "\u0160": "S", + "\u0161": "s", + "\u0162": "T", + "\u0163": "t", + "\u021B": "t", + "\u021A": "T", + "\u0164": "T", + "\u0165": "t", + "\u0166": "T", + "\u0167": "t", + "T\u0306": "T", + "t\u0306": "t", + "\u0168": "U", + "\u0169": "u", + "\u016A": "U", + "\u016B": "u", + "\u016C": "U", + "\u016D": "u", + "\u016E": "U", + "\u016F": "u", + "\u0170": "U", + "\u0171": "u", + "\u0172": "U", + "\u0173": "u", + "\u0216": "U", + "\u0217": "u", + "V\u0306": "V", + "v\u0306": "v", + "\u0174": "W", + "\u0175": "w", + "\u1E82": "W", + "\u1E83": "w", + "X\u0306": "X", + "x\u0306": "x", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "Y\u0306": "Y", + "y\u0306": "y", + "\u0179": "Z", + "\u017A": "z", + "\u017B": "Z", + "\u017C": "z", + "\u017D": "Z", + "\u017E": "z", + "\u017F": "s", + "\u0192": "f", + "\u01A0": "O", + "\u01A1": "o", + "\u01AF": "U", + "\u01B0": "u", + "\u01CD": "A", + "\u01CE": "a", + "\u01CF": "I", + "\u01D0": "i", + "\u01D1": "O", + "\u01D2": "o", + "\u01D3": "U", + "\u01D4": "u", + "\u01D5": "U", + "\u01D6": "u", + "\u01D7": "U", + "\u01D8": "u", + "\u01D9": "U", + "\u01DA": "u", + "\u01DB": "U", + "\u01DC": "u", + "\u1EE8": "U", + "\u1EE9": "u", + "\u1E78": "U", + "\u1E79": "u", + "\u01FA": "A", + "\u01FB": "a", + "\u01FC": "AE", + "\u01FD": "ae", + "\u01FE": "O", + "\u01FF": "o", + "\xDE": "TH", + "\xFE": "th", + "\u1E54": "P", + "\u1E55": "p", + "\u1E64": "S", + "\u1E65": "s", + "X\u0301": "X", + "x\u0301": "x", + "\u0403": "\u0413", + "\u0453": "\u0433", + "\u040C": "\u041A", + "\u045C": "\u043A", + "A\u030B": "A", + "a\u030B": "a", + "E\u030B": "E", + "e\u030B": "e", + "I\u030B": "I", + "i\u030B": "i", + "\u01F8": "N", + "\u01F9": "n", + "\u1ED2": "O", + "\u1ED3": "o", + "\u1E50": "O", + "\u1E51": "o", + "\u1EEA": "U", + "\u1EEB": "u", + "\u1E80": "W", + "\u1E81": "w", + "\u1EF2": "Y", + "\u1EF3": "y", + "\u0200": "A", + "\u0201": "a", + "\u0204": "E", + "\u0205": "e", + "\u0208": "I", + "\u0209": "i", + "\u020C": "O", + "\u020D": "o", + "\u0210": "R", + "\u0211": "r", + "\u0214": "U", + "\u0215": "u", + "B\u030C": "B", + "b\u030C": "b", + "\u010C\u0323": "C", + "\u010D\u0323": "c", + "\xCA\u030C": "E", + "\xEA\u030C": "e", + "F\u030C": "F", + "f\u030C": "f", + "\u01E6": "G", + "\u01E7": "g", + "\u021E": "H", + "\u021F": "h", + "J\u030C": "J", + "\u01F0": "j", + "\u01E8": "K", + "\u01E9": "k", + "M\u030C": "M", + "m\u030C": "m", + "P\u030C": "P", + "p\u030C": "p", + "Q\u030C": "Q", + "q\u030C": "q", + "\u0158\u0329": "R", + "\u0159\u0329": "r", + "\u1E66": "S", + "\u1E67": "s", + "V\u030C": "V", + "v\u030C": "v", + "W\u030C": "W", + "w\u030C": "w", + "X\u030C": "X", + "x\u030C": "x", + "Y\u030C": "Y", + "y\u030C": "y", + "A\u0327": "A", + "a\u0327": "a", + "B\u0327": "B", + "b\u0327": "b", + "\u1E10": "D", + "\u1E11": "d", + "\u0228": "E", + "\u0229": "e", + "\u0190\u0327": "E", + "\u025B\u0327": "e", + "\u1E28": "H", + "\u1E29": "h", + "I\u0327": "I", + "i\u0327": "i", + "\u0197\u0327": "I", + "\u0268\u0327": "i", + "M\u0327": "M", + "m\u0327": "m", + "O\u0327": "O", + "o\u0327": "o", + "Q\u0327": "Q", + "q\u0327": "q", + "U\u0327": "U", + "u\u0327": "u", + "X\u0327": "X", + "x\u0327": "x", + "Z\u0327": "Z", + "z\u0327": "z", + "\u0439": "\u0438", + "\u0419": "\u0418", + "\u0451": "\u0435", + "\u0401": "\u0415" + }; + var chars = Object.keys(characterMap).join("|"); + var allAccents = new RegExp(chars, "g"); + var firstAccent = new RegExp(chars, ""); + function matcher(match2) { + return characterMap[match2]; + } + var removeAccents2 = function(string) { + return string.replace(allAccents, matcher); + }; + var hasAccents = function(string) { + return !!string.match(firstAccent); + }; + module.exports = removeAccents2; + module.exports.has = hasAccents; + module.exports.remove = removeAccents2; + } +}); + +// node_modules/fast-deep-equal/es6/index.js +var require_es6 = __commonJS({ + "node_modules/fast-deep-equal/es6/index.js"(exports, module) { + "use strict"; + module.exports = function equal(a2, b2) { + if (a2 === b2) return true; + if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { + if (a2.constructor !== b2.constructor) return false; + var length, i2, keys; + if (Array.isArray(a2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (!equal(a2[i2], b2[i2])) return false; + return true; + } + if (a2 instanceof Map && b2 instanceof Map) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + for (i2 of a2.entries()) + if (!equal(i2[1], b2.get(i2[0]))) return false; + return true; + } + if (a2 instanceof Set && b2 instanceof Set) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + return true; + } + if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (a2[i2] !== b2[i2]) return false; + return true; + } + if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; + if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); + if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) return false; + for (i2 = length; i2-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; + for (i2 = length; i2-- !== 0; ) { + var key = keys[i2]; + if (!equal(a2[key], b2[key])) return false; + } + return true; + } + return a2 !== a2 && b2 !== b2; + }; + } +}); + +// package-external:@wordpress/date +var require_date = __commonJS({ + "package-external:@wordpress/date"(exports, module) { + module.exports = window.wp.date; + } +}); + +// package-external:@wordpress/warning +var require_warning = __commonJS({ + "package-external:@wordpress/warning"(exports, module) { + module.exports = window.wp.warning; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// routes/post-list/stage.tsx +import { + useParams, + useNavigate, + useSearch, + Link, + useInvalidate +} from "@wordpress/route"; + +// node_modules/dequal/dist/index.mjs +var has = Object.prototype.hasOwnProperty; +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + if (foo && bar && (ctor = foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + if (ctor === Array) { + if ((len = foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])) ; + } + return len === -1; + } + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; + } + return len === -1; + } + if (ArrayBuffer.isView(foo)) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]) ; + } + return len === -1; + } + if (!ctor || typeof foo === "object") { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + return foo !== foo && bar !== bar; +} + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + const preserved = (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + result = { + ...result, + filters: (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ) + }; + } + if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { + result = { + ...result, + sort: defaultView?.sort + }; + } + return result; +} + +// packages/views/build-module/use-view.mjs +function omit(obj, keys) { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +} +function useView(config) { + const { + kind, + name, + slug, + defaultView, + activeViewOverrides, + queryParams, + onChangeQueryParams + } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data.useSelect)( + (select2) => { + return select2(import_preferences.store).get( + "core/views", + preferenceKey + ); + }, + [preferenceKey] + ); + const { set } = (0, import_data.useDispatch)(import_preferences.store); + const baseView = persistedView ?? defaultView; + const page = Number(queryParams?.page ?? baseView.page ?? 1); + const search = queryParams?.search ?? baseView.search ?? ""; + const view = (0, import_element.useMemo)(() => { + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); + }, [baseView, page, search, activeViewOverrides, defaultView]); + const isModified = !!persistedView; + const updateView = (0, import_element.useCallback)( + (newView) => { + const urlParams = { + page: newView?.page, + search: newView?.search + }; + const preferenceView = stripActiveViewOverrides( + omit(newView, ["page", "search"]), + activeViewOverrides, + defaultView + ); + if (onChangeQueryParams && !dequal(urlParams, { page, search })) { + onChangeQueryParams(urlParams); + } + const comparableBaseView = stripActiveViewOverrides( + baseView, + activeViewOverrides, + defaultView + ); + const comparableDefaultView = stripActiveViewOverrides( + defaultView, + activeViewOverrides, + defaultView + ); + if (!dequal(comparableBaseView, preferenceView)) { + if (dequal(preferenceView, comparableDefaultView)) { + set("core/views", preferenceKey, void 0); + } else { + set("core/views", preferenceKey, preferenceView); + } + } + }, + [ + onChangeQueryParams, + page, + search, + baseView, + defaultView, + activeViewOverrides, + set, + preferenceKey + ] + ); + const resetToDefault = (0, import_element.useCallback)(() => { + set("core/views", preferenceKey, void 0); + }, [preferenceKey, set]); + return { + view, + isModified, + updateView, + resetToDefault + }; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); + +// packages/dataviews/build-module/dataviews/index.mjs +var import_element54 = __toESM(require_element(), 1); +var import_compose12 = __toESM(require_compose(), 1); + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React2 = __toESM(require_react(), 1); +var UNINITIALIZED = {}; +function useRefWithInit(init2, initArg) { + const ref = React2.useRef(UNINITIALIZED); + if (ref.current === UNINITIALIZED) { + ref.current = init2(initArg); + } + return ref; +} + +// node_modules/@base-ui/react/esm/utils/useRenderElement.js +var React5 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useMergedRefs.js +function useMergedRefs(a2, b2, c2, d2) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChange(forkRef, a2, b2, c2, d2)) { + update(forkRef, [a2, b2, c2, d2]); + } + return forkRef.callback; +} +function useMergedRefsN(refs) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChangeN(forkRef, refs)) { + update(forkRef, refs); + } + return forkRef.callback; +} +function createForkRef() { + return { + callback: null, + cleanup: null, + refs: [] + }; +} +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]); +} +function update(forkRef, refs) { + forkRef.refs = refs; + if (refs.every((ref) => ref == null)) { + forkRef.callback = null; + return; + } + forkRef.callback = (instance) => { + if (forkRef.cleanup) { + forkRef.cleanup(); + forkRef.cleanup = null; + } + if (instance != null) { + const cleanupCallbacks = Array(refs.length).fill(null); + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const refCleanup = ref(instance); + if (typeof refCleanup === "function") { + cleanupCallbacks[i2] = refCleanup; + } + break; + } + case "object": { + ref.current = instance; + break; + } + default: + } + } + forkRef.cleanup = () => { + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const cleanupCallback = cleanupCallbacks[i2]; + if (typeof cleanupCallback === "function") { + cleanupCallback(); + } else { + ref(null); + } + break; + } + case "object": { + ref.current = null; + break; + } + default: + } + } + }; + } + }; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +var React4 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/reactVersion.js +var React3 = __toESM(require_react(), 1); +var majorVersion = parseInt(React3.version, 10); +function isReactVersionAtLeast(reactVersionToCheck) { + return majorVersion >= reactVersionToCheck; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +function getReactElementRef(element) { + if (!/* @__PURE__ */ React4.isValidElement(element)) { + return null; + } + const reactElement = element; + const propsWithRef = reactElement.props; + return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; +} + +// node_modules/@base-ui/utils/esm/mergeObjects.js +function mergeObjects(a2, b2) { + if (a2 && !b2) { + return a2; + } + if (!a2 && b2) { + return b2; + } + if (a2 || b2) { + return { + ...a2, + ...b2 + }; + } + return void 0; +} + +// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +function getStateAttributesProps(state, customMapping) { + const props = {}; + for (const key in state) { + const value = state[key]; + if (customMapping?.hasOwnProperty(key)) { + const customProps = customMapping[key](value); + if (customProps != null) { + Object.assign(props, customProps); + } + continue; + } + if (value === true) { + props[`data-${key.toLowerCase()}`] = ""; + } else if (value) { + props[`data-${key.toLowerCase()}`] = value.toString(); + } + } + return props; +} + +// node_modules/@base-ui/react/esm/utils/resolveClassName.js +function resolveClassName(className, state) { + return typeof className === "function" ? className(state) : className; +} + +// node_modules/@base-ui/react/esm/utils/resolveStyle.js +function resolveStyle(style, state) { + return typeof style === "function" ? style(state) : style; +} + +// 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 (b2) { + merged = mergeOne(merged, b2); + } + if (c2) { + merged = mergeOne(merged, c2); + } + if (d2) { + merged = mergeOne(merged, d2); + } + if (e2) { + merged = mergeOne(merged, e2); + } + return merged; +} +function mergePropsN(props) { + if (props.length === 0) { + return EMPTY_PROPS; + } + if (props.length === 1) { + return resolvePropsGetter(props[0], EMPTY_PROPS); + } + let merged = { + ...resolvePropsGetter(props[0], EMPTY_PROPS) + }; + for (let i2 = 1; i2 < props.length; i2 += 1) { + merged = mergeOne(merged, props[i2]); + } + return merged; +} +function mergeOne(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return inputProps(merged); + } + return mutablyMergeInto(merged, inputProps); +} +function mutablyMergeInto(mergedProps, externalProps) { + if (!externalProps) { + return mergedProps; + } + for (const propName in externalProps) { + const externalPropValue = externalProps[propName]; + switch (propName) { + case "style": { + mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); + break; + } + case "className": { + mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); + break; + } + default: { + if (isEventHandler(propName, externalPropValue)) { + mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); + } else { + mergedProps[propName] = externalPropValue; + } + } + } + } + return mergedProps; +} +function isEventHandler(key, value) { + const code0 = key.charCodeAt(0); + const code1 = key.charCodeAt(1); + const code2 = key.charCodeAt(2); + return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); +} +function isPropsGetter(inputProps) { + return typeof inputProps === "function"; +} +function resolvePropsGetter(inputProps, previousProps) { + if (isPropsGetter(inputProps)) { + return inputProps(previousProps); + } + return inputProps ?? EMPTY_PROPS; +} +function mergeEventHandlers(ourHandler, theirHandler) { + if (!theirHandler) { + return ourHandler; + } + if (!ourHandler) { + return theirHandler; + } + return (event) => { + if (isSyntheticEvent(event)) { + const baseUIEvent = event; + makeEventPreventable(baseUIEvent); + const result2 = theirHandler(baseUIEvent); + if (!baseUIEvent.baseUIHandlerPrevented) { + ourHandler?.(baseUIEvent); + } + return result2; + } + const result = theirHandler(event); + ourHandler?.(event); + return result; + }; +} +function makeEventPreventable(event) { + event.preventBaseUIHandler = () => { + event.baseUIHandlerPrevented = true; + }; + return event; +} +function mergeClassNames(ourClassName, theirClassName) { + if (theirClassName) { + if (ourClassName) { + return theirClassName + " " + ourClassName; + } + return theirClassName; + } + return ourClassName; +} +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/useRenderElement.js +var import_react = __toESM(require_react(), 1); +function useRenderElement(element, componentProps, params = {}) { + const renderProp = componentProps.render; + const outProps = useRenderElementProps(componentProps, params); + if (params.enabled === false) { + return null; + } + const state = params.state ?? EMPTY_OBJECT; + return evaluateRenderProp(element, renderProp, outProps, state); +} +function useRenderElementProps(componentProps, params = {}) { + const { + className: classNameProp, + style: styleProp, + render: renderProp + } = componentProps; + const { + state = EMPTY_OBJECT, + ref, + props, + stateAttributesMapping, + 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 outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + if (typeof document !== "undefined") { + if (!enabled) { + useMergedRefs(null, null); + } else if (Array.isArray(ref)) { + outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); + } else { + outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); + } + } + if (!enabled) { + return EMPTY_OBJECT; + } + if (className !== void 0) { + outProps.className = mergeClassNames(outProps.className, className); + } + if (style !== void 0) { + outProps.style = mergeObjects(outProps.style, style); + } + return outProps; +} +function evaluateRenderProp(element, render4, props, state) { + if (render4) { + if (typeof render4 === "function") { + return render4(props, state); + } + const mergedProps = mergeProps(props, render4.props); + mergedProps.ref = props.ref; + return /* @__PURE__ */ React5.cloneElement(render4, 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(8)); +} +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__ */ React5.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// node_modules/clsx/dist/clsx.mjs +function r(e2) { + var t2, f2, n2 = ""; + if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; + else if ("object" == typeof e2) if (Array.isArray(e2)) { + var o2 = e2.length; + for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2); + } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); + return n2; +} +function clsx() { + for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2); + return n2; +} +var clsx_default = clsx; + +// packages/ui/build-module/stack/stack.mjs +var import_element2 = __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"); + 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 Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && `var(--wpds-dimension-gap-${gap})`, + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render: render4, + ref, + props: mergeProps(props, { style, className: style_default.stack }) + }); + return element; +}); + +// packages/icons/build-module/library/arrow-down.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var arrow_down_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: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); + +// packages/icons/build-module/library/arrow-left.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var arrow_left_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: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); + +// packages/icons/build-module/library/arrow-right.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var arrow_right_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: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); + +// packages/icons/build-module/library/arrow-up.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var arrow_up_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: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); + +// packages/icons/build-module/library/block-table.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); + +// packages/icons/build-module/library/category.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var category_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + import_primitives6.Path, + { + d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", + fillRule: "evenodd", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/check.mjs +var import_primitives7 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var check_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives8 = __toESM(require_primitives(), 1); +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.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/cog.mjs +var import_primitives9 = __toESM(require_primitives(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var cog_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + import_primitives9.Path, + { + fillRule: "evenodd", + d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/envelope.mjs +var import_primitives10 = __toESM(require_primitives(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + import_primitives10.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" + } +) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives11 = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( + import_primitives11.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/format-list-bullets-rtl.mjs +var import_primitives12 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); + +// packages/icons/build-module/library/format-list-bullets.mjs +var import_primitives13 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); + +// packages/icons/build-module/library/funnel.mjs +var import_primitives14 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); + +// packages/icons/build-module/library/link.mjs +var import_primitives15 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var link_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); + +// packages/icons/build-module/library/mobile.mjs +var import_primitives16 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives17 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives18 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.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_primitives19 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.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/icons/build-module/library/scheduled.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + import_primitives20.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z" + } +) }); + +// packages/icons/build-module/library/search.mjs +var import_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var search_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); + +// packages/icons/build-module/library/seen.mjs +var import_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// packages/icons/build-module/library/unseen.mjs +var import_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var import_element3 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/constants.mjs +var import_i18n = __toESM(require_i18n(), 1); +var OPERATOR_IS_ANY = "isAny"; +var OPERATOR_IS_NONE = "isNone"; +var OPERATOR_IS_ALL = "isAll"; +var OPERATOR_IS_NOT_ALL = "isNotAll"; +var OPERATOR_BETWEEN = "between"; +var OPERATOR_IN_THE_PAST = "inThePast"; +var OPERATOR_OVER = "over"; +var OPERATOR_IS = "is"; +var OPERATOR_IS_NOT = "isNot"; +var OPERATOR_LESS_THAN = "lessThan"; +var OPERATOR_GREATER_THAN = "greaterThan"; +var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; +var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; +var OPERATOR_BEFORE = "before"; +var OPERATOR_AFTER = "after"; +var OPERATOR_BEFORE_INC = "beforeInc"; +var OPERATOR_AFTER_INC = "afterInc"; +var OPERATOR_CONTAINS = "contains"; +var OPERATOR_NOT_CONTAINS = "notContains"; +var OPERATOR_STARTS_WITH = "startsWith"; +var OPERATOR_ON = "on"; +var OPERATOR_NOT_ON = "notOn"; +var SORTING_DIRECTIONS = ["asc", "desc"]; +var sortArrows = { asc: "\u2191", desc: "\u2193" }; +var sortValues = { asc: "ascending", desc: "descending" }; +var sortLabels = { + asc: (0, import_i18n.__)("Sort ascending"), + desc: (0, import_i18n.__)("Sort descending") +}; +var sortIcons = { + asc: arrow_up_default, + desc: arrow_down_default +}; +var LAYOUT_TABLE = "table"; +var LAYOUT_GRID = "grid"; +var LAYOUT_LIST = "list"; +var LAYOUT_ACTIVITY = "activity"; +var LAYOUT_PICKER_GRID = "pickerGrid"; +var LAYOUT_PICKER_TABLE = "pickerTable"; + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var DataViewsContext = (0, import_element3.createContext)({ + view: { type: LAYOUT_TABLE }, + onChangeView: () => { + }, + fields: [], + data: [], + paginationInfo: { + totalItems: 0, + totalPages: 0 + }, + selection: [], + onChangeSelection: () => { + }, + setOpenedFilter: () => { + }, + openedFilter: null, + getItemId: (item) => item.id, + isItemClickable: () => true, + renderItemLink: void 0, + containerWidth: 0, + containerRef: (0, import_element3.createRef)(), + resizeObserverRef: () => { + }, + defaultLayouts: { list: {}, grid: {}, table: {} }, + filters: [], + isShowingFilter: false, + setIsShowingFilter: () => { + }, + hasInfiniteScrollHandler: false, + config: { + perPageSizes: [] + } +}); +DataViewsContext.displayName = "DataViewsContext"; +var dataviews_context_default = DataViewsContext; + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var import_i18n21 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_i18n9 = __toESM(require_i18n(), 1); +var import_components6 = __toESM(require_components(), 1); +var import_element10 = __toESM(require_element(), 1); +var import_keycodes = __toESM(require_keycodes(), 1); + +// packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs +var import_components = __toESM(require_components(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +function DataViewsSelectionCheckbox({ + selection, + onChangeSelection, + item, + getItemId: getItemId2, + titleField, + disabled, + ...extraProps +}) { + const id = getItemId2(item); + const checked = !disabled && selection.includes(id); + const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n2.__)("(no title)"); + return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( + import_components.CheckboxControl, + { + className: "dataviews-selection-checkbox", + "aria-label": selectionLabel, + "aria-disabled": disabled, + checked, + onChange: () => { + if (disabled) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + }, + ...extraProps + } + ); +} + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_components2 = __toESM(require_components(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_element4 = __toESM(require_element(), 1); +var import_data3 = __toESM(require_data(), 1); +var import_compose = __toESM(require_compose(), 1); + +// packages/dataviews/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/dataviews" +); + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var { Menu, kebabCase } = unlock(import_components2.privateApis); +function ButtonTrigger({ + action, + onClick, + items, + variant +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Button, + { + disabled: !!action.disabled, + accessibleWhenDisabled: true, + size: "compact", + variant, + onClick, + children: label + } + ); +} +function MenuItemTrigger({ + action, + onClick, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.ItemLabel, { children: label }) }); +} +function ActionModal({ + action, + items, + closeModal +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Modal, + { + title: modalHeader || label, + __experimentalHideHeader: !!action.hideModalHeader, + onRequestClose: closeModal, + focusOnMount: action.modalFocusOnMount ?? true, + size: action.modalSize || "medium", + overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase( + action.id + )}`, + children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(action.RenderModal, { items, closeModal }) + } + ); +} +function ActionsMenuGroup({ + actions, + item, + registry, + setActiveModalAction +}) { + const { primaryActions, regularActions } = (0, import_element4.useMemo)(() => { + return actions.reduce( + (acc, action) => { + (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); + return acc; + }, + { + primaryActions: [], + regularActions: [] + } + ); + }, [actions]); + const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + MenuItemTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item] + }, + action.id + )); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Menu.Group, { children: [ + renderActionGroup(primaryActions), + primaryActions.length > 0 && regularActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Separator, {}), + renderActionGroup(regularActions) + ] }); +} +function ItemActions({ + item, + actions, + isCompact +}) { + const registry = (0, import_data3.useRegistry)(); + const { primaryActions, eligibleActions } = (0, import_element4.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isCompact) { + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + isSmall: true, + registry + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)( + Stack, + { + direction: "row", + justify: "flex-end", + className: "dataviews-item-actions", + style: { + flexShrink: 0, + width: "auto" + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + registry + } + ) + ] + } + ); +} +function CompactItemActions({ + item, + actions, + isSmall, + registry +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)( + null + ); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Menu, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + Menu.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + import_components2.Button, + { + size: isSmall ? "small" : "compact", + icon: more_vertical_default, + label: (0, import_i18n3.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + className: "dataviews-all-actions-button" + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Menu.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionsMenuGroup, + { + actions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} +function PrimaryActions({ + item, + actions, + registry, + buttonVariant +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)(null); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isMobileViewport) { + return null; + } + if (!Array.isArray(actions) || actions.length === 0) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [ + actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ButtonTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item], + variant: buttonVariant + }, + action.id + )), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_components3 = __toESM(require_components(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); +var import_element5 = __toESM(require_element(), 1); +var import_data4 = __toESM(require_data(), 1); +var import_compose2 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/utils/get-footer-message.mjs +var import_i18n4 = __toESM(require_i18n(), 1); +function getFooterMessage(selectionCount, itemsCount, totalItems) { + if (selectionCount > 0) { + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item selected", "%d Items selected", selectionCount), + selectionCount + ); + } + if (totalItems > itemsCount) { + return (0, import_i18n4.sprintf)( + /* translators: %1$d: number of items. %2$d: total number of items. */ + (0, import_i18n4._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), + itemsCount, + totalItems + ); + } + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item", "%d Items", itemsCount), + itemsCount + ); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +function ActionWithModal({ + action, + items, + ActionTriggerComponent +}) { + const [isModalOpen, setIsModalOpen] = (0, import_element5.useState)(false); + const actionTriggerProps = { + action, + onClick: () => { + setIsModalOpen(true); + }, + items + }; + return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), + isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionModal, + { + action, + items, + closeModal: () => setIsModalOpen(false) + } + ) + ] }); +} +function useHasAPossibleBulkAction(actions, item) { + return (0, import_element5.useMemo)(() => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }, [actions, item]); +} +function useSomeItemHasAPossibleBulkAction(actions, data) { + return (0, import_element5.useMemo)(() => { + return data.some((item) => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }); + }, [actions, data]); +} +function BulkSelectionCheckbox({ + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 +}) { + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return actions.some( + (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) + ); + }); + }, [data, actions]); + const selectedItems = data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + const areAllSelected = selectedItems.length === selectableItems.length; + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.CheckboxControl, + { + className: "dataviews-view-table-selection-checkbox", + checked: areAllSelected, + indeterminate: !areAllSelected && !!selectedItems.length, + onChange: () => { + if (areAllSelected) { + onChangeSelection([]); + } else { + onChangeSelection( + selectableItems.map((item) => getItemId2(item)) + ); + } + }, + "aria-label": areAllSelected ? (0, import_i18n5.__)("Deselect all") : (0, import_i18n5.__)("Select all") + } + ); +} +function ActionTrigger({ + action, + onClick, + isBusy, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + if (isMobile) { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + label, + icon: action.icon, + size: "compact", + onClick, + isBusy + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + size: "compact", + onClick, + isBusy, + children: label + } + ); +} +var EMPTY_ARRAY2 = []; +function ActionButton({ + action, + selectedItems, + actionInProgress, + setActionInProgress +}) { + const registry = (0, import_data4.useRegistry)(); + const selectedEligibleItems = (0, import_element5.useMemo)(() => { + return selectedItems.filter((item) => { + return !action.isEligible || action.isEligible(item); + }); + }, [action, selectedItems]); + if ("RenderModal" in action) { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionWithModal, + { + action, + items: selectedEligibleItems, + ActionTriggerComponent: ActionTrigger + }, + action.id + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionTrigger, + { + action, + onClick: async () => { + setActionInProgress(action.id); + await action.callback(selectedItems, { + registry + }); + setActionInProgress(null); + }, + items: selectedEligibleItems, + isBusy: actionInProgress === action.id + }, + action.id + ); +} +function renderFooterContent(data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { + const message2 = getFooterMessage( + selection.length, + data.length, + paginationInfo.totalItems + ); + return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__container", + gap: "md", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ), + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), + /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__action-buttons", + gap: "xs", + children: [ + actionsToShow.map((action) => { + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + ActionButton, + { + action, + selectedItems, + actionInProgress, + setActionInProgress + }, + action.id + ); + }), + selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + import_components3.Button, + { + icon: close_small_default, + showTooltip: true, + tooltipPosition: "top", + size: "compact", + label: (0, import_i18n5.__)("Cancel"), + disabled: !!actionInProgress, + accessibleWhenDisabled: false, + onClick: () => { + onChangeSelection(EMPTY_ARRAY2); + } + } + ) + ] + } + ) + ] + } + ); +} +function FooterContent({ + selection, + actions, + onChangeSelection, + data, + getItemId: getItemId2, + paginationInfo +}) { + const [actionInProgress, setActionInProgress] = (0, import_element5.useState)( + null + ); + const footerContentRef = (0, import_element5.useRef)(null); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + const bulkActions = (0, import_element5.useMemo)( + () => actions.filter((action) => action.supportsBulk), + [actions] + ); + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return bulkActions.some( + (action) => !action.isEligible || action.isEligible(item) + ); + }); + }, [data, bulkActions]); + const selectedItems = (0, import_element5.useMemo)(() => { + return data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + }, [selection, data, getItemId2, selectableItems]); + const actionsToShow = (0, import_element5.useMemo)( + () => actions.filter((action) => { + return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( + (item) => !action.isEligible || action.isEligible(item) + ); + }), + [actions, selectedItems, isMobile] + ); + if (!actionInProgress) { + if (footerContentRef.current) { + footerContentRef.current = null; + } + return renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } else if (!footerContentRef.current) { + footerContentRef.current = renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } + return footerContentRef.current; +} +function BulkActionsFooter() { + const { + data, + selection, + actions = EMPTY_ARRAY2, + onChangeSelection, + getItemId: getItemId2, + paginationInfo + } = (0, import_element5.useContext)(dataviews_context_default); + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + FooterContent, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2, + paginationInfo + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_i18n6 = __toESM(require_i18n(), 1); +var import_components4 = __toESM(require_components(), 1); +var import_element6 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/utils/get-hideable-fields.mjs +function getHideableFields(view, fields) { + const togglableFields = [ + view?.titleField, + view?.mediaField, + view?.descriptionField + ].filter(Boolean); + return fields.filter( + (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock(import_components4.privateApis); +function WithMenuSeparators({ children }) { + return import_element6.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_element6.Fragment, { children: [ + i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Separator, {}), + child + ] }, i2)); +} +var _HeaderMenu = (0, import_element6.forwardRef)(function HeaderMenu({ + fieldId, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove = true, + canInsertLeft = true, + canInsertRight = true +}, ref) { + const visibleFieldIds = view.fields ?? []; + const index = visibleFieldIds?.indexOf(fieldId); + const isSorted = view.sort?.field === fieldId; + let isHidable = false; + let isSortable = false; + let canAddFilter = false; + let operators = []; + const field = fields.find((f2) => f2.id === fieldId); + const { setIsShowingFilter } = (0, import_element6.useContext)(dataviews_context_default); + if (!field) { + return null; + } + isHidable = field.enableHiding !== false; + isSortable = field.enableSorting !== false; + const header = field.header; + operators = !!field.filterBy && field.filterBy?.operators || []; + canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; + if (!isSortable && !canMove && !isHidable && !canAddFilter) { + return header; + } + const hiddenFields = getHideableFields(view, fields).filter( + (f2) => !visibleFieldIds.includes(f2.id) + ); + const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; + const isRtl = (0, import_i18n6.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)( + Menu2.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + import_components4.Button, + { + size: "compact", + className: "dataviews-view-table-header-button", + ref, + variant: "tertiary" + } + ), + children: [ + header, + view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(WithMenuSeparators, { children: [ + isSortable && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Group, { children: SORTING_DIRECTIONS.map( + (direction) => { + const isChecked = view.sort && isSorted && view.sort.direction === direction; + const value = `${fieldId}-${direction}`; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.RadioItem, + { + name: "view-table-sorting", + value, + checked: isChecked, + onChange: () => { + onChangeView({ + ...view, + sort: { + field: fieldId, + direction + }, + showLevels: false + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: sortLabels[direction] }) + }, + value + ); + } + ) }), + canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: funnel_default }), + onClick: () => { + setOpenedFilter(fieldId); + setIsShowingFilter(true); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: fieldId, + value: void 0, + operator: operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Add filter") }) + } + ) }), + (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2.Group, { children: [ + canMove && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: arrow_left_default }), + disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, + onClick: () => { + const targetIndex = isRtl ? index + 1 : index - 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move left") }) + } + ), + canMove && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: arrow_right_default }), + disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, + onClick: () => { + const targetIndex = isRtl ? index - 1 : index + 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move right") }) + } + ), + canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert left") }) }), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index + 1 : index; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert right") }) }), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index : index + 1; + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components4.Icon, { icon: unseen_default }), + onClick: () => { + onHide(field); + onChangeView({ + ...view, + fields: visibleFieldIds.filter( + (id) => id !== fieldId + ) + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Hide column") }) + } + ) + ] }) + ] }) }) + ] }); +}); +var ColumnHeaderMenu = _HeaderMenu; +var column_header_menu_default = ColumnHeaderMenu; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs +var import_element7 = __toESM(require_element(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +function getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className +}) { + if (!isItemClickable(item) || !onClickItem) { + return { className }; + } + return { + className: className ? `${className} ${className}--clickable` : void 0, + role: "button", + tabIndex: 0, + onClick: (event) => { + event.stopPropagation(); + onClickItem(item); + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + onClickItem(item); + } + } + }; +} +function ItemClickWrapper({ + item, + isItemClickable, + onClickItem, + renderItemLink, + className, + children, + ...extraProps +}) { + if (!isItemClickable(item)) { + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className, ...extraProps, children }); + } + if (renderItemLink) { + const renderedElement = renderItemLink({ + item, + className: `${className} ${className}--clickable`, + ...extraProps, + children + }); + return (0, import_element7.cloneElement)(renderedElement, { + onClick: (event) => { + event.stopPropagation(); + if (renderedElement.props.onClick) { + renderedElement.props.onClick(event); + } + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + if (renderedElement.props.onKeyDown) { + renderedElement.props.onKeyDown(event); + } + } + } + }); + } + const clickProps = getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className + }); + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ...clickProps, ...extraProps, children }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +function ColumnPrimary({ + item, + level, + titleField, + mediaField, + descriptionField, + onClickItem, + renderItemLink, + isItemClickable +}) { + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ + mediaField && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", + "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "32px" } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( + Stack, + { + direction: "column", + align: "flex-start", + className: "dataviews-view-table__primary-column-content", + children: [ + titleField && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", + children: [ + level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("span", { className: "dataviews-view-table__level", children: [ + Array(level).fill("\u2014").join(" "), + "\xA0" + ] }), + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(titleField.render, { item, field: titleField }) + ] + } + ), + descriptionField && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) + ] + } + ) + ] }); +} +var column_primary_default = ColumnPrimary; + +// packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs +var import_compose3 = __toESM(require_compose(), 1); +var import_element8 = __toESM(require_element(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); +var isScrolledToEnd = (element) => { + if ((0, import_i18n7.isRTL)()) { + const scrollLeft = Math.abs(element.scrollLeft); + return scrollLeft <= 1; + } + return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; +}; +function useIsHorizontalScrollEnd({ + scrollContainerRef, + enabled = false +}) { + const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element8.useState)(false); + const handleIsHorizontalScrollEnd = (0, import_compose3.useDebounce)( + (0, import_element8.useCallback)(() => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); + } + }, [scrollContainerRef, setIsHorizontalScrollEnd]), + 200 + ); + (0, import_element8.useEffect)(() => { + if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { + return () => { + }; + } + handleIsHorizontalScrollEnd(); + scrollContainerRef.current.addEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.addEventListener("resize", handleIsHorizontalScrollEnd); + return () => { + scrollContainerRef.current?.removeEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.removeEventListener("resize", handleIsHorizontalScrollEnd); + }; + }, [scrollContainerRef, enabled]); + return isHorizontalScrollEnd; +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs +function getDataByGroup(data, groupByField) { + return data.reduce((groups, item) => { + const groupName = groupByField.getValue({ item }); + if (!groups.has(groupName)) { + groups.set(groupName, []); + } + groups.get(groupName)?.push(item); + return groups; + }, /* @__PURE__ */ new Map()); +} + +// packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs +var import_components5 = __toESM(require_components(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); +var import_element9 = __toESM(require_element(), 1); +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +function FieldItem({ + field, + isVisible: isVisible2, + onToggleVisibility +}) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.Icon, { icon: check_default }) }), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) + ] }) }); +} +function isDefined(item) { + return !!item; +} +function PropertiesSection({ + showLabel = true +}) { + const { view, fields, onChangeView } = (0, import_element9.useContext)(dataviews_context_default); + const regularFields = getHideableFields(view, fields); + if (!regularFields?.length) { + return null; + } + const titleField = fields.find((f2) => f2.id === view.titleField); + const previewField = fields.find((f2) => f2.id === view.mediaField); + const descriptionField = fields.find( + (f2) => f2.id === view.descriptionField + ); + const lockedFields = [ + { + field: titleField, + isVisibleFlag: "showTitle" + }, + { + field: previewField, + isVisibleFlag: "showMedia" + }, + { + field: descriptionField, + isVisibleFlag: "showDescription" + } + ].filter(({ field }) => isDefined(field)); + const visibleFieldIds = view.fields ?? []; + const visibleRegularFieldsCount = regularFields.filter( + (f2) => visibleFieldIds.includes(f2.id) + ).length; + const visibleLockedFields = lockedFields.filter( + ({ isVisibleFlag }) => ( + // @ts-expect-error + view[isVisibleFlag] ?? true + ) + ); + const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; + const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ + showLabel && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components5.BaseControl.VisualLabel, { children: (0, import_i18n8.__)("Properties") }), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config__properties", + children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_components5.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ + lockedFields.map(({ field, isVisibleFlag }) => { + const isVisible2 = view[isVisibleFlag] ?? true; + const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + [isVisibleFlag]: !isVisible2 + }); + } + }, + field.id + ); + }), + regularFields.map((field) => { + const isVisible2 = visibleFieldIds.includes(field.id); + const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + fields: isVisible2 ? visibleFieldIds.filter( + (fieldId) => fieldId !== field.id + ) : [...visibleFieldIds, field.id] + }); + } + }, + field.id + ); + }) + ] }) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +function TableColumnField({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(field.render, { item, field }) }); +} +function TableRow({ + hasBulkActions, + item, + level, + actions, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + isItemClickable, + onClickItem, + renderItemLink, + onChangeSelection, + isActionsColumnSticky, + posinset +}) { + const { paginationInfo } = (0, import_element10.useContext)(dataviews_context_default); + const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); + const isSelected2 = hasPossibleBulkAction && selection.includes(id); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const isTouchDeviceRef = (0, import_element10.useRef)(false); + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": hasPossibleBulkAction && isSelected2, + "has-bulk-actions": hasPossibleBulkAction + }), + onTouchStart: () => { + isTouchDeviceRef.current = true; + }, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : void 0, + onMouseDown: (event) => { + const isMetaClick = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { + event?.preventDefault(); + } + }, + onClick: (event) => { + if (!hasPossibleBulkAction) { + return; + } + const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasPossibleBulkAction + } + ) }) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_primary_default, + { + item, + level, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable, + onClickItem, + renderItemLink + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableColumnField, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }), + !!actions?.length && // Disable reason: we are not making the element interactive, + // but preventing any click events from bubbling up to the + // table row. This allows us to add a click handler to the row + // itself (to toggle row selection) without erroneously + // intercepting click events from ItemActions. + /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + className: clsx_default("dataviews-view-table__actions-column", { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": isActionsColumnSticky + }), + onClick: (e2) => e2.stopPropagation(), + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ItemActions, { item, actions }) + } + ) + ] + } + ); +} +function ViewTable({ + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + view, + className, + empty +}) { + const { containerRef } = (0, import_element10.useContext)(dataviews_context_default); + const headerMenuRefs = (0, import_element10.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element10.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element10.useState)(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element10.useState)(null); + (0, import_element10.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element10.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const handleHeaderContextMenu = (event) => { + event.preventDefault(); + event.stopPropagation(); + const virtualAnchor = { + getBoundingClientRect: () => ({ + x: event.clientX, + y: event.clientY, + top: event.clientY, + left: event.clientX, + right: event.clientX, + bottom: event.clientY, + width: 0, + height: 0, + toJSON: () => ({}) + }) + }; + window.requestAnimationFrame(() => { + setContextMenuAnchor(virtualAnchor); + }); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const isRtl = (0, import_i18n9.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "table", + { + className: clsx_default("dataviews-view-table", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ), + "has-bulk-actions": hasBulkActions + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("colgroup", { children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-first-data" }), + columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "col", + { + className: clsx_default( + `dataviews-view-table__col-${column}`, + { + "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 + } + ) + }, + `col-${column}` + )), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("col", { className: "dataviews-view-table__col-actions" }) + ] }), + contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components6.Popover, + { + anchor: contextMenuAnchor, + onClose: () => setContextMenuAnchor(null), + placement: "bottom-start", + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PropertiesSection, { showLabel: false }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("tr", { className: "dataviews-view-table__row", children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + className: "dataviews-view-table__checkbox-column", + scope: "col", + onContextMenu: handleHeaderContextMenu, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false, + canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, + canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: canInsertOrMove, + canInsertLeft: canInsertOrMove, + canInsertRight: canInsertOrMove + } + ) + }, + column + ); + }), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + className: clsx_default( + "dataviews-view-table__actions-column", + { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd + } + ), + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n9.__)("Actions") }) + } + ) + ] }) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("tbody", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), + className: "dataviews-view-table__group-header-cell", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n9.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n9.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) }), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel2 === "function" ? getItemLevel2(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd + }, + getItemId2(item) + )) + ] }, `group-${groupName}`) + ) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel2 === "function" ? getItemLevel2(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd, + posinset: isInfiniteScroll ? index + 1 : void 0 + }, + getItemId2(item) + )) }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components6.Spinner, {}) }) + ] + } + ) + ] }); +} +var table_default = ViewTable; + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_components9 = __toESM(require_components(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_components8 = __toESM(require_components(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); +var import_compose4 = __toESM(require_compose(), 1); +var import_keycodes2 = __toESM(require_keycodes(), 1); +var import_element12 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs +var import_components7 = __toESM(require_components(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); +var import_element11 = __toESM(require_element(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var imageSizes = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; +function useGridColumns() { + const context = (0, import_element11.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element11.useMemo)(() => { + const containerWidth = context.containerWidth; + const gap = 32; + const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; + const columns = Math.floor( + (containerWidth + gap) / (previewSize + gap) + ); + return Math.max(1, columns); + }, [context.containerWidth, view.layout?.previewSize]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +var { Badge } = unlock(import_components8.privateApis); +function chunk(array, size) { + const chunks = []; + for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { + chunks.push(array.slice(i2, i2 + size)); + } + return chunks; +} +var GridItem = (0, import_element12.forwardRef)(function GridItem2({ + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config, + ...props +}, ref) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasBulkAction = useHasAPossibleBulkAction(actions, item); + const id = getItemId2(item); + const instanceId = (0, import_compose4.useInstanceId)(GridItem2); + const isSelected2 = selection.includes(id); + const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); + const rendersMediaField = showMedia && mediaField?.render; + const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : mediaPlaceholder; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(titleField.render, { item, field: titleField }) : null; + let mediaA11yProps; + let titleA11yProps; + if (isItemClickable(item) && onClickItem) { + if (renderedTitleField) { + mediaA11yProps = { + "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` + }; + titleA11yProps = { + id: `dataviews-view-grid__title-field-${instanceId}` + }; + } else { + mediaA11yProps = { + "aria-label": (0, import_i18n11.__)("Navigate to item") + }; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( + Stack, + { + direction: "column", + ...props, + ref, + className: clsx_default( + props.className, + "dataviews-view-grid__row__gridcell", + "dataviews-view-grid__card", + { + "is-selected": hasBulkAction && isSelected2 + } + ), + onClickCapture: (event) => { + props.onClickCapture?.(event); + if ((0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey) { + event.stopPropagation(); + event.preventDefault(); + if (!hasBulkAction) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: clsx_default("dataviews-view-grid__media", { + "dataviews-view-grid__media--placeholder": !rendersMediaField + }), + ...mediaA11yProps, + children: renderedMediaField + } + ), + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasBulkAction + } + ), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemActions, { item, actions, isCompact: true }) }), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-grid__title-field dataviews-title-field", + ...titleA11yProps, + title: titleField?.getValueFormatted({ + item, + field: titleField + }) || void 0, + children: renderedTitleField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Badge, + { + className: "dataviews-view-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Flex, + { + className: "dataviews-view-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components8.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components8.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.FlexItem, + { + className: "dataviews-view-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + } + ); +}); +function CompositeGrid({ + data, + isInfiniteScroll, + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element12.useContext)(dataviews_context_default); + const gridColumns = useGridColumns(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const size = "900px"; + const totalRows = Math.ceil(data.length / gridColumns); + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite, + { + role: isInfiniteScroll ? "feed" : "grid", + className: clsx_default("dataviews-view-grid", className), + focusWrap: true, + "aria-busy": isLoading, + "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, + ref: resizeObserverRef, + children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite.Row, + { + render: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + "div", + { + role: "row", + "aria-rowindex": i2 + 1, + "aria-label": (0, import_i18n11.sprintf)( + /* translators: %d: The row number in the grid */ + (0, import_i18n11.__)("Row %d"), + i2 + 1 + ), + className: "dataviews-view-grid__row", + style: { + gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` + } + } + ), + children: row.map((item, indexInRow) => { + const index = i2 * gridColumns + indexInRow; + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_components8.Composite.Item, + { + render: (props) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + GridItem, + { + ...props, + role: isInfiniteScroll ? "article" : "gridcell", + "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, + "aria-posinset": isInfiniteScroll ? index + 1 : void 0, + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config: { + sizes: size + } + } + ) + }, + getItemId2(item) + ); + }) + }, + i2 + )) + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +function ViewGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + selection, + view, + className, + empty +}) { + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const gridProps = { + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions + }; + return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n12.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n12.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data: groupItems, + isInfiniteScroll: false + } + ) + ] + }, + groupName + ) + ) }), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components9.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components9.Spinner, {}) }) + ] + }); +} +var grid_default = ViewGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs +var import_compose5 = __toESM(require_compose(), 1); +var import_components10 = __toESM(require_components(), 1); +var import_element13 = __toESM(require_element(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); +var import_data5 = __toESM(require_data(), 1); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock(import_components10.privateApis); +function generateItemWrapperCompositeId(idPrefix) { + return `${idPrefix}-item-wrapper`; +} +function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { + return `${idPrefix}-primary-action-${primaryActionId}`; +} +function generateDropdownTriggerCompositeId(idPrefix) { + return `${idPrefix}-dropdown`; +} +function PrimaryActionGridCell({ + idPrefix, + primaryAction, + item +}) { + const registry = (0, import_data5.useRegistry)(); + const [isModalOpen, setIsModalOpen] = (0, import_element13.useState)(false); + const compositeItemId = generatePrimaryActionCompositeId( + idPrefix, + primaryAction.id + ); + const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); + return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + text: label, + size: "small", + onClick: () => setIsModalOpen(true) + } + ), + children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionModal, + { + action: primaryAction, + items: [item], + closeModal: () => setIsModalOpen(false) + } + ) + } + ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + size: "small", + onClick: () => { + primaryAction.callback([item], { registry }); + }, + children: label + } + ) + } + ) }, primaryAction.id); +} +function ListItem({ + view, + actions, + idPrefix, + isSelected: isSelected2, + item, + titleField, + mediaField, + descriptionField, + onSelect, + otherFields, + onDropdownTriggerKeyDown, + posinset +}) { + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element13.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element13.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element13.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element13.useContext)(dataviews_context_default); + (0, import_element13.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element13.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryAction: _primaryActions[0], + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; + const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "52px" } + } + ) }) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(titleField.render, { item, field: titleField }) : null; + const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + gap: "md", + className: "dataviews-view-list__item-actions", + children: [ + primaryAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + PrimaryActionGridCell, + { + idPrefix, + primaryAction, + item + } + ), + !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { role: "gridcell", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Menu3, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Menu3.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: generateDropdownTriggerCompositeId( + idPrefix + ), + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Button, + { + size: "small", + icon: more_vertical_default, + label: (0, import_i18n13.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + onKeyDown: onDropdownTriggerKeyDown + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Menu3.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionsMenuGroup, + { + actions: eligibleActions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }) + ] + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Row, + { + ref: itemRef, + render: ( + /* aria-posinset breaks Composite.Row if passed to it directly. */ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 + } + ) + ), + role: infiniteScrollEnabled ? "article" : "row", + className: clsx_default({ + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleHover, + onMouseLeave: handleHover, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-view-list__item-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite.Item, + { + id: generateItemWrapperCompositeId(idPrefix), + "aria-pressed": isSelected2, + "aria-labelledby": labelId, + "aria-describedby": descriptionId, + className: "dataviews-view-list__item", + onClick: () => onSelect(item) + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "row", + gap: "md", + justify: "start", + align: "flex-start", + style: { flex: 1, minWidth: 0 }, + children: [ + renderedMediaField, + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "column", + gap: "xs", + className: "dataviews-view-list__field-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "row", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: "dataviews-title-field dataviews-view-list__title-field", + id: labelId, + children: renderedTitleField + } + ), + usedActions + ] }), + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: "dataviews-view-list__fields", + id: descriptionId, + children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + "div", + { + className: "dataviews-view-list__field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.VisuallyHidden, + { + as: "span", + className: "dataviews-view-list__field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) + } + ) + ] + } + ) + ] + } + ) + ] + } + ) + } + ); +} +function isDefined2(item) { + return !!item; +} +function ViewList(props) { + const { + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty + } = props; + const baseId = (0, import_compose5.useInstanceId)(ViewList, "view-list"); + const selectedItem = data?.findLast( + (item) => selection.includes(getItemId2(item)) + ); + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); + const onSelect = (item) => onChangeSelection([getItemId2(item)]); + const generateCompositeItemIdPrefix = (0, import_element13.useCallback)( + (item) => `${baseId}-${getItemId2(item)}`, + [baseId, getItemId2] + ); + const isActiveCompositeItem = (0, import_element13.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element13.useState)(void 0); + (0, import_element13.useEffect)(() => { + if (selectedItem) { + setActiveCompositeId( + generateItemWrapperCompositeId( + generateCompositeItemIdPrefix(selectedItem) + ) + ); + } + }, [selectedItem, generateCompositeItemIdPrefix]); + const activeItemIndex = data.findIndex( + (item) => isActiveCompositeItem(item, activeCompositeId ?? "") + ); + const previousActiveItemIndex = (0, import_compose5.usePrevious)(activeItemIndex); + const isActiveIdInList = activeItemIndex !== -1; + const selectCompositeItem = (0, import_element13.useCallback)( + (targetIndex, generateCompositeId) => { + const clampedIndex = Math.min( + data.length - 1, + Math.max(0, targetIndex) + ); + if (!data[clampedIndex]) { + return; + } + const itemIdPrefix = generateCompositeItemIdPrefix( + data[clampedIndex] + ); + const targetCompositeItemId = generateCompositeId(itemIdPrefix); + setActiveCompositeId(targetCompositeItemId); + document.getElementById(targetCompositeItemId)?.focus(); + }, + [data, generateCompositeItemIdPrefix] + ); + (0, import_element13.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element13.useCallback)( + (event) => { + if (event.key === "ArrowDown") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex + 1, + generateDropdownTriggerCompositeId + ); + } + if (event.key === "ArrowUp") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex - 1, + generateDropdownTriggerCompositeId + ); + } + }, + [selectCompositeItem, activeItemIndex] + ); + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components10.Spinner, {}) }) : empty) + } + ); + } + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite, + { + id: `${baseId}`, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", {}), + className: "dataviews-view-list__group", + role: "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Stack, + { + direction: "column", + gap: "lg", + className: clsx_default("dataviews-view-list", className), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n13.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n13.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + groupItems.map((item) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown + }, + id + ); + }) + ] + }, + groupName + ) + ) + } + ) + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + import_components10.Composite, + { + id: baseId, + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", {}), + className: clsx_default("dataviews-view-list", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: data.map((item, index) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + }, + id + ); + }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components10.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_components12 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs +var import_i18n14 = __toESM(require_i18n(), 1); +var import_element14 = __toESM(require_element(), 1); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +function ActivityGroup({ + groupName, + groupData, + groupField, + showLabel = true, + children +}) { + const groupHeader = showLabel ? (0, import_element14.createInterpolateElement)( + // translators: %s: The label of the field e.g. "Status". + (0, import_i18n14.sprintf)((0, import_i18n14.__)("%s: "), groupField.label).trim(), + { + groupName: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + groupField.render, + { + item: groupData[0], + field: groupField + } + ) + } + ) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(groupField.render, { item: groupData[0], field: groupField }); + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-activity__group", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), + children + ] + }, + groupName + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs +var import_components11 = __toESM(require_components(), 1); +var import_element15 = __toESM(require_element(), 1); +var import_data6 = __toESM(require_data(), 1); +var import_compose6 = __toESM(require_compose(), 1); +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +function ActivityItem(props) { + const { + view, + actions, + item, + titleField, + mediaField, + descriptionField, + otherFields, + posinset, + onClickItem, + renderItemLink, + isItemClickable + } = props; + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element15.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element15.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element15.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose6.useViewportMatch)("medium", "<"); + const density = view.layout?.density ?? "balanced"; + const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { + sizes: density === "comfortable" ? "32px" : "24px" + } + } + ) : null; + const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + "span", + { + className: "dataviews-view-activity__item-bullet", + "aria-hidden": "true" + } + ) }); + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(titleField.render, { item, field: titleField }) : null; + const verticalGap = (0, import_element15.useMemo)(() => { + switch (density) { + case "comfortable": + return "md"; + default: + return "sm"; + } + }, [density]); + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + "div", + { + ref: itemRef, + role: infiniteScrollEnabled ? "article" : void 0, + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + className: clsx_default( + "dataviews-view-activity__item", + density === "compact" && "is-compact", + density === "balanced" && "is-balanced", + density === "comfortable" && "is-comfortable" + ), + children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + Stack, + { + direction: "column", + gap: "xs", + align: "center", + className: "dataviews-view-activity__item-type", + children: renderedMediaField + } + ), + /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( + Stack, + { + direction: "column", + gap: verticalGap, + align: "flex-start", + className: "dataviews-view-activity__item-content", + children: [ + renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-activity__item-title", + children: renderedTitleField + } + ), + showDescription && descriptionField && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( + "div", + { + className: "dataviews-view-activity__item-field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + import_components11.VisuallyHidden, + { + as: "span", + className: "dataviews-view-activity__item-field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) }), + !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry, + buttonVariant: "secondary" + } + ) + ] + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport && // At the same time, only show the menu if there are actions to show. + eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( + ItemActions, + { + item, + actions: eligibleActions, + isCompact: true + } + ) }) + ] }) + } + ); +} +var activity_item_default = ActivityItem; + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs +var import_react3 = __toESM(require_react(), 1); +function isDefined3(item) { + return !!item; +} +function ActivityItems(props) { + const { data, fields, getItemId: getItemId2, view } = props; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); + return data.map((item, index) => { + return /* @__PURE__ */ (0, import_react3.createElement)( + activity_item_default, + { + ...props, + key: getItemId2(item), + item, + mediaField, + titleField, + descriptionField, + otherFields, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + } + ); + }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); +function ViewActivity(props) { + const { empty, data, fields, isLoading, view, className } = props; + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components12.Spinner, {}) }) : empty) + } + ); + } + const wrapperClassName = clsx_default("dataviews-view-activity", className); + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Stack, { direction: "column", gap: "sm", className: wrapperClassName, children: groupedEntries.map( + ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ActivityGroup, + { + groupName, + groupData, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ActivityItems, + { + ...props, + data: groupData + } + ) + }, + groupName + ) + ) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: wrapperClassName, + role: view.infiniteScrollEnabled ? "feed" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActivityItems, { ...props }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components12.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_components15 = __toESM(require_components(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); +var import_compose7 = __toESM(require_compose(), 1); +var import_element19 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_components14 = __toESM(require_components(), 1); +var import_data7 = __toESM(require_data(), 1); +var import_element17 = __toESM(require_element(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-pagination/index.mjs +var import_components13 = __toESM(require_components(), 1); +var import_element16 = __toESM(require_element(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +function DataViewsPagination() { + const { + view, + onChangeView, + paginationInfo: { totalItems = 0, totalPages } + } = (0, import_element16.useContext)(dataviews_context_default); + if (!totalItems || !totalPages || view.infiniteScrollEnabled) { + return null; + } + const currentPage = view.page ?? 1; + const pageSelectOptions = Array.from(Array(totalPages)).map( + (_, i2) => { + const page = i2 + 1; + return { + value: page.toString(), + label: page.toString(), + "aria-label": currentPage === page ? (0, import_i18n15.sprintf)( + // translators: 1: current page number. 2: total number of pages. + (0, import_i18n15.__)("Page %1$d of %2$d"), + currentPage, + totalPages + ) : page.toString() + }; + } + ); + return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-pagination", + justify: "end", + align: "center", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + align: "center", + gap: "xs", + className: "dataviews-pagination__page-select", + children: (0, import_element16.createInterpolateElement)( + (0, import_i18n15.sprintf)( + // translators: 1: Current page number, 2: Total number of pages. + (0, import_i18n15._x)( + "
      Page
      %1$s
      of %2$d
      ", + "paging" + ), + "", + totalPages + ), + { + div: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { "aria-hidden": true }), + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.SelectControl, + { + "aria-label": (0, import_i18n15.__)("Current page"), + value: currentPage.toString(), + options: pageSelectOptions, + onChange: (newValue) => { + onChangeView({ + ...view, + page: +newValue + }); + }, + size: "small", + variant: "minimal" + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ + ...view, + page: currentPage - 1 + }), + disabled: currentPage === 1, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Previous page"), + icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ ...view, page: currentPage + 1 }), + disabled: currentPage >= totalPages, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Next page"), + icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ) + ] }) + ] + } + ); +} +var dataviews_pagination_default = (0, import_element16.memo)(DataViewsPagination); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +function useIsMultiselectPicker(actions) { + return (0, import_element17.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element18.forwardRef)(({ className, previewSize, ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + "div", + { + ref, + className: clsx_default("dataviews-view-grid-items", className), + style: { + gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` + }, + ...props + } + ); +}); + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +var { Badge: Badge2 } = unlock(import_components15.privateApis); +function GridItem3({ + view, + multiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config, + posinset, + setsize +}) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const id = getItemId2(item); + const isSelected2 = selection.includes(id); + const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(titleField.render, { item, field: titleField }) : null; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + import_components15.Composite.Item, + { + "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n17.__)("(no title)") : void 0, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Stack, { direction: "column", children, ...props }), + role: "option", + "aria-posinset": posinset, + "aria-setsize": setsize, + className: clsx_default("dataviews-view-picker-grid__card", { + "is-selected": isSelected2 + }), + "aria-selected": isSelected2, + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "row", + justify: "space-between", + className: "dataviews-view-picker-grid__title-actions", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-picker-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Badge2, + { + className: "dataviews-view-picker-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-picker-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Flex, + { + className: "dataviews-view-picker-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.FlexItem, + { + className: "dataviews-view-picker-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + }, + id + ); +} +function GridGroup({ + groupName, + groupField, + showLabel = true, + children +}) { + const headerId = (0, import_compose7.useInstanceId)( + GridGroup, + "dataviews-view-picker-grid-group__header" + ); + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + role: "group", + "aria-labelledby": headerId, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "h3", + { + className: "dataviews-view-picker-grid-group__header", + id: headerId, + children: showLabel ? (0, import_i18n17.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n17.__)("%1$s: %2$s"), + groupField.label, + groupName + ) : groupName + } + ), + children + ] + }, + groupName + ); +} +function ViewPickerGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty +}) { + const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element19.useContext)(dataviews_context_default); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const hasData = !!data?.length; + const usedPreviewSize = view.layout?.previewSize; + const isMultiselect = useIsMultiselectPicker(actions); + const size = "900px"; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const currentPage = view?.page ?? 1; + const perPage = view?.perPage ?? 0; + const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Composite, + { + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + "aria-label": itemListLabel, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "column", + gap: "lg", + children, + ...props + } + ), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridGroup, + { + groupName, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItems, + { + previewSize: usedPreviewSize, + style: { + gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` + }, + "aria-busy": isLoading, + ref: resizeObserverRef, + children: groupItems.map((item) => { + const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset: posInSet, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ) + }, + groupName + ) + ) + } + ), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components15.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItems, + { + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + previewSize: usedPreviewSize, + "aria-busy": isLoading, + ref: resizeObserverRef + } + ), + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + "aria-label": itemListLabel, + children: data.map((item, index) => { + let posinset = isInfiniteScroll ? index + 1 : void 0; + if (!isInfiniteScroll) { + posinset = (currentPage - 1) * perPage + index + 1; + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components15.Spinner, {}) }) + ] + }); +} +var picker_grid_default = ViewPickerGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs +var import_i18n18 = __toESM(require_i18n(), 1); +var import_components16 = __toESM(require_components(), 1); +var import_element20 = __toESM(require_element(), 1); +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); +function TableColumnField2({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(field.render, { item, field }) }); +} +function TableRow2({ + item, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect, + posinset +}) { + const { paginationInfo } = (0, import_element20.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element20.useState)(false); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const handleMouseEnter = () => { + setIsHovered(true); + }; + const handleMouseLeave = () => { + setIsHovered(false); + }; + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + import_components16.Composite.Item, + { + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, + children, + ...props + } + ), + "aria-selected": isSelected2, + "aria-setsize": paginationInfo.totalItems || void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : "option", + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + className: "dataviews-view-table__checkbox-column", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ) }) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_primary_default, + { + item, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable: () => false + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableColumnField2, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }) + ] + }, + id + ); +} +function ViewPickerTable({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + view, + className, + empty +}) { + const headerMenuRefs = (0, import_element20.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element20.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element20.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element20.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element20.useId)(); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "table", + { + className: clsx_default( + "dataviews-view-table", + "dataviews-view-picker-table", + className, + { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + } + ), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : "listbox", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "tr", + { + className: "dataviews-view-table__row", + role: "presentation", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: view.layout?.enableMoving ?? true + } + ) + }, + column + ); + }) + ] + } + ) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + import_components16.Composite, + { + virtualFocus: true, + orientation: "vertical", + render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tbody", { role: "group" }), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "tr", + { + className: "dataviews-view-table__group-header-row", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, + className: "dataviews-view-table__group-header-cell", + role: "presentation", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n18.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n18.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) + } + ), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect + }, + getItemId2(item) + )) + ] + }, + `group-${groupName}` + ) + ) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components16.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tbody", { role: "presentation" }), + virtualFocus: true, + orientation: "vertical", + children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect, + posinset: index + 1 + }, + getItemId2(item) + )) + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components16.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components16.Spinner, {}) }) + ] + } + ) + ] }); +} +var picker_table_default = ViewPickerTable; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs +var import_components17 = __toESM(require_components(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); +var import_element21 = __toESM(require_element(), 1); +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +var imageSizes2 = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +function PreviewSizePicker() { + const context = (0, import_element21.useContext)(dataviews_context_default); + const view = context.view; + const breakValues = imageSizes2.filter((size) => { + return context.containerWidth >= size.breakpoint; + }); + const layoutPreviewSize = view.layout?.previewSize ?? 230; + const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; + const marks = breakValues.map((size, index) => { + return { + value: index + }; + }); + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components17.RangeControl, + { + __next40pxDefaultSize: true, + showTooltip: false, + label: (0, import_i18n19.__)("Preview size"), + value: previewSizeToUse, + min: 0, + max: breakValues.length - 1, + withInputField: false, + onChange: (value = 0) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + previewSize: breakValues[value].value + } + }); + }, + step: 1, + marks + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs +var import_components18 = __toESM(require_components(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element22.useContext)(dataviews_context_default); + const view = context.view; + return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( + import_components18.__experimentalToggleGroupControl, + { + size: "__unstable-large", + label: (0, import_i18n20.__)("Density"), + value: view.layout?.density || "balanced", + onChange: (value) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + density: value + } + }); + }, + isBlock: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "comfortable", + label: (0, import_i18n20._x)( + "Comfortable", + "Density option for DataView layout" + ) + }, + "comfortable" + ), + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "balanced", + label: (0, import_i18n20._x)("Balanced", "Density option for DataView layout") + }, + "balanced" + ), + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "compact", + label: (0, import_i18n20._x)("Compact", "Density option for DataView layout") + }, + "compact" + ) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var VIEW_LAYOUTS = [ + { + type: LAYOUT_TABLE, + label: (0, import_i18n21.__)("Table"), + component: table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_GRID, + label: (0, import_i18n21.__)("Grid"), + component: grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker + }, + { + type: LAYOUT_LIST, + label: (0, import_i18n21.__)("List"), + component: ViewList, + icon: (0, import_i18n21.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_ACTIVITY, + label: (0, import_i18n21.__)("Activity"), + component: ViewActivity, + icon: scheduled_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_PICKER_GRID, + label: (0, import_i18n21.__)("Grid"), + component: picker_grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker, + isPicker: true + }, + { + type: LAYOUT_PICKER_TABLE, + label: (0, import_i18n21.__)("Table"), + component: picker_table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker, + isPicker: true + } +]; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_element30 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_components21 = __toESM(require_components(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); +var import_element27 = __toESM(require_element(), 1); + +// node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp2.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b2)) { + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js +var __defProp3 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __hasOwnProp3 = Object.prototype.hasOwnProperty; +var __propIsEnum2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues2 = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp3.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + if (__getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(b2)) { + if (__propIsEnum2.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps2 = (a2, b2) => __defProps2(a2, __getOwnPropDescs2(b2)); +var __objRest2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js +function noop(..._) { +} +function applyState(argument, currentValue) { + if (isUpdater(argument)) { + const value = isLazyValue(currentValue) ? currentValue() : currentValue; + return argument(value); + } + return argument; +} +function isUpdater(argument) { + return typeof argument === "function"; +} +function isLazyValue(value) { + return typeof value === "function"; +} +function hasOwnProperty(object, prop) { + if (typeof Object.hasOwn === "function") { + return Object.hasOwn(object, prop); + } + return Object.prototype.hasOwnProperty.call(object, prop); +} +function chain(...fns) { + return (...args) => { + for (const fn of fns) { + if (typeof fn === "function") { + fn(...args); + } + } + }; +} +function normalizeString(str) { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); +} +function omit2(object, keys) { + const result = __spreadValues2({}, object); + for (const key of keys) { + if (hasOwnProperty(result, key)) { + delete result[key]; + } + } + return result; +} +function pick(object, paths) { + const result = {}; + for (const key of paths) { + if (hasOwnProperty(object, key)) { + result[key] = object[key]; + } + } + return result; +} +function identity(value) { + return value; +} +function invariant(condition, message2) { + if (condition) return; + if (typeof message2 !== "string") throw new Error("Invariant failed"); + throw new Error(message2); +} +function getKeys(obj) { + return Object.keys(obj); +} +function isFalsyBooleanCallback(booleanOrCallback, ...args) { + const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; + if (result == null) return false; + return !result; +} +function disabledFromProps(props) { + return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; +} +function removeUndefinedValues(obj) { + const result = {}; + for (const key in obj) { + if (obj[key] !== void 0) { + result[key] = obj[key]; + } + } + return result; +} +function defaultValue(...values) { + for (const value of values) { + if (value !== void 0) return value; + } + return void 0; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js +var import_react4 = __toESM(require_react(), 1); +function setRef(ref, value) { + if (typeof ref === "function") { + ref(value); + } else if (ref) { + ref.current = value; + } +} +function isValidElementWithRef(element) { + if (!element) return false; + if (!(0, import_react4.isValidElement)(element)) return false; + if ("ref" in element.props) return true; + if ("ref" in element) return true; + return false; +} +function getRefProperty(element) { + if (!isValidElementWithRef(element)) return null; + const props = __spreadValues({}, element.props); + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = __spreadValues({}, base); + for (const key in overrides) { + if (!hasOwnProperty(overrides, key)) continue; + if (key === "className") { + const prop = "className"; + props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; + continue; + } + if (key === "style") { + const prop = "style"; + props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; + continue; + } + const overrideValue = overrides[key]; + if (typeof overrideValue === "function" && key.startsWith("on")) { + const baseValue = base[key]; + if (typeof baseValue === "function") { + props[key] = (...args) => { + overrideValue(...args); + baseValue(...args); + }; + continue; + } + } + props[key] = overrideValue; + } + return props; +} + +// node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js +var canUseDOM = checkIsBrowser(); +function checkIsBrowser() { + var _a; + return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); +} +function getDocument(node) { + if (!node) return document; + if ("self" in node) return node.document; + return node.ownerDocument || document; +} +function getActiveElement(node, activeDescendant = false) { + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && activeElement.contentDocument) { + return getActiveElement( + activeElement.contentDocument.body, + activeDescendant + ); + } + if (activeDescendant) { + const id = activeElement.getAttribute("aria-activedescendant"); + if (id) { + const element = getDocument(activeElement).getElementById(id); + if (element) { + return element; + } + } + } + return activeElement; +} +function contains(parent, child) { + return parent === child || parent.contains(child); +} +function isFrame(element) { + return element.tagName === "IFRAME"; +} +function isButton(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "button") return true; + if (tagName === "input" && element.type) { + return buttonInputTypes.indexOf(element.type) !== -1; + } + return false; +} +var buttonInputTypes = [ + "button", + "color", + "file", + "image", + "reset", + "submit" +]; +function isVisible(element) { + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + const htmlElement = element; + return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; +} +function isTextField(element) { + try { + const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; + const isTextArea = element.tagName === "TEXTAREA"; + return isTextInput || isTextArea || false; + } catch (error) { + return false; + } +} +function isTextbox(element) { + return element.isContentEditable || isTextField(element); +} +function getTextboxValue(element) { + if (isTextField(element)) { + return element.value; + } + if (element.isContentEditable) { + const range = getDocument(element).createRange(); + range.selectNodeContents(element); + return range.toString(); + } + return ""; +} +function getTextboxSelection(element) { + let start = 0; + let end = 0; + if (isTextField(element)) { + start = element.selectionStart || 0; + end = element.selectionEnd || 0; + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { + const range = selection.getRangeAt(0); + const nextRange = range.cloneRange(); + nextRange.selectNodeContents(element); + nextRange.setEnd(range.startContainer, range.startOffset); + start = nextRange.toString().length; + nextRange.setEnd(range.endContainer, range.endOffset); + end = nextRange.toString().length; + } + } + return { start, end }; +} +function getPopupRole(element, fallback) { + const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; + const role = element == null ? void 0 : element.getAttribute("role"); + if (role && allowedPopupRoles.indexOf(role) !== -1) { + return role; + } + return fallback; +} +function getScrollingElement(element) { + if (!element) return null; + const isScrollableOverflow = (overflow) => { + if (overflow === "auto") return true; + if (overflow === "scroll") return true; + return false; + }; + if (element.clientHeight && element.scrollHeight > element.clientHeight) { + const { overflowY } = getComputedStyle(element); + if (isScrollableOverflow(overflowY)) return element; + } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { + const { overflowX } = getComputedStyle(element); + if (isScrollableOverflow(overflowX)) return element; + } + return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; +} +function setSelectionRange(element, ...args) { + if (/text|search|password|tel|url/i.test(element.type)) { + element.setSelectionRange(...args); + } +} +function sortBasedOnDOMPosition(items, getElement) { + const pairs = items.map((item, index) => [index, item]); + let isOrderDifferent = false; + pairs.sort(([indexA, a2], [indexB, b2]) => { + const elementA = getElement(a2); + const elementB = getElement(b2); + if (elementA === elementB) return 0; + if (!elementA || !elementB) return 0; + if (isElementPreceding(elementA, elementB)) { + if (indexA > indexB) { + isOrderDifferent = true; + } + return -1; + } + if (indexA < indexB) { + isOrderDifferent = true; + } + return 1; + }); + if (isOrderDifferent) { + return pairs.map(([_, item]) => item); + } + return items; +} +function isElementPreceding(a2, b2) { + return Boolean( + b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING + ); +} + +// node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js +function isTouchDevice() { + return canUseDOM && !!navigator.maxTouchPoints; +} +function isApple() { + if (!canUseDOM) return false; + return /mac|iphone|ipad|ipod/i.test(navigator.platform); +} +function isSafari() { + return canUseDOM && isApple() && /apple/i.test(navigator.vendor); +} +function isFirefox() { + return canUseDOM && /firefox\//i.test(navigator.userAgent); +} + +// node_modules/@ariakit/core/esm/utils/events.js +function isPortalEvent(event) { + return Boolean( + event.currentTarget && !contains(event.currentTarget, event.target) + ); +} +function isSelfTarget(event) { + return event.target === event.currentTarget; +} +function isOpeningInNewTab(event) { + const element = event.currentTarget; + if (!element) return false; + const isAppleDevice = isApple(); + if (isAppleDevice && !event.metaKey) return false; + if (!isAppleDevice && !event.ctrlKey) return false; + const tagName = element.tagName.toLowerCase(); + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function isDownloading(event) { + const element = event.currentTarget; + if (!element) return false; + const tagName = element.tagName.toLowerCase(); + if (!event.altKey) return false; + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function fireBlurEvent(element, eventInit) { + const event = new FocusEvent("blur", eventInit); + const defaultAllowed = element.dispatchEvent(event); + const bubbleInit = __spreadProps2(__spreadValues2({}, eventInit), { bubbles: true }); + element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); + return defaultAllowed; +} +function fireKeyboardEvent(element, type, eventInit) { + const event = new KeyboardEvent(type, eventInit); + return element.dispatchEvent(event); +} +function fireClickEvent(element, eventInit) { + const event = new MouseEvent("click", eventInit); + return element.dispatchEvent(event); +} +function isFocusEventOutside(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function queueBeforeEvent(element, type, callback, timeout) { + const createTimer = (callback2) => { + if (timeout) { + const timerId2 = setTimeout(callback2, timeout); + return () => clearTimeout(timerId2); + } + const timerId = requestAnimationFrame(callback2); + return () => cancelAnimationFrame(timerId); + }; + const cancelTimer = createTimer(() => { + element.removeEventListener(type, callSync, true); + callback(); + }); + const callSync = () => { + cancelTimer(); + callback(); + }; + element.addEventListener(type, callSync, { once: true, capture: true }); + return cancelTimer; +} +function addGlobalEventListener(type, listener, options, scope = window) { + const children = []; + try { + scope.document.addEventListener(type, listener, options); + for (const frame of Array.from(scope.frames)) { + children.push(addGlobalEventListener(type, listener, options, frame)); + } + } catch (e2) { + } + const removeEventListener = () => { + try { + scope.document.removeEventListener(type, listener, options); + } catch (e2) { + } + for (const remove of children) { + remove(); + } + }; + return removeEventListener; +} + +// node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js +var import_react5 = __toESM(require_react(), 1); +var React6 = __toESM(require_react(), 1); +var _React = __spreadValues({}, React6); +var useReactId = _React.useId; +var useReactDeferredValue = _React.useDeferredValue; +var useReactInsertionEffect = _React.useInsertionEffect; +var useSafeLayoutEffect = canUseDOM ? import_react5.useLayoutEffect : import_react5.useEffect; +function useInitialValue(value) { + const [initialValue] = (0, import_react5.useState)(value); + return initialValue; +} +function useLiveRef(value) { + const ref = (0, import_react5.useRef)(value); + useSafeLayoutEffect(() => { + ref.current = value; + }); + return ref; +} +function useEvent(callback) { + const ref = (0, import_react5.useRef)(() => { + throw new Error("Cannot call an event handler while rendering."); + }); + if (useReactInsertionEffect) { + useReactInsertionEffect(() => { + ref.current = callback; + }); + } else { + ref.current = callback; + } + return (0, import_react5.useCallback)((...args) => { + var _a; + return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); + }, []); +} +function useTransactionState(callback) { + const [state, setState] = (0, import_react5.useState)(null); + useSafeLayoutEffect(() => { + if (state == null) return; + if (!callback) return; + let prevState = null; + callback((prev) => { + prevState = prev; + return state; + }); + return () => { + callback(prevState); + }; + }, [state, callback]); + return [state, setState]; +} +function useMergeRefs(...refs) { + return (0, import_react5.useMemo)(() => { + if (!refs.some(Boolean)) return; + return (value) => { + for (const ref of refs) { + setRef(ref, value); + } + }; + }, refs); +} +function useId3(defaultId) { + if (useReactId) { + const reactId = useReactId(); + if (defaultId) return defaultId; + return reactId; + } + const [id, setId] = (0, import_react5.useState)(defaultId); + useSafeLayoutEffect(() => { + if (defaultId || id) return; + const random = Math.random().toString(36).slice(2, 8); + setId(`id-${random}`); + }, [defaultId, id]); + return defaultId || id; +} +function useTagName(refOrElement, type) { + const stringOrUndefined = (type2) => { + if (typeof type2 !== "string") return; + return type2; + }; + const [tagName, setTagName] = (0, import_react5.useState)(() => stringOrUndefined(type)); + useSafeLayoutEffect(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); + }, [refOrElement, type]); + return tagName; +} +function useAttribute(refOrElement, attributeName, defaultValue2) { + const initialValue = useInitialValue(defaultValue2); + const [attribute, setAttribute] = (0, import_react5.useState)(initialValue); + (0, import_react5.useEffect)(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + if (!element) return; + const callback = () => { + const value = element.getAttribute(attributeName); + setAttribute(value == null ? initialValue : value); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { attributeFilter: [attributeName] }); + callback(); + return () => observer.disconnect(); + }, [refOrElement, attributeName, initialValue]); + return attribute; +} +function useUpdateEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + (0, import_react5.useEffect)(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + (0, import_react5.useEffect)( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useUpdateLayoutEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + useSafeLayoutEffect(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + useSafeLayoutEffect( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useForceUpdate() { + return (0, import_react5.useReducer)(() => [], []); +} +function useBooleanEvent(booleanOrCallback) { + return useEvent( + typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback + ); +} +function useWrapElement(props, callback, deps = []) { + const wrapElement = (0, import_react5.useCallback)( + (element) => { + if (props.wrapElement) { + element = props.wrapElement(element); + } + return callback(element); + }, + [...deps, props.wrapElement] + ); + return __spreadProps(__spreadValues({}, props), { wrapElement }); +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, __spreadProps(__spreadValues({}, parent), { [key]: value })); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + }, []); + const isMouseMoving = useEvent(() => mouseMoving); + return isMouseMoving; +} +var mouseMoving = false; +var previousScreenX = 0; +var previousScreenY = 0; +function hasMouseMovement(event) { + const movementX = event.movementX || event.screenX - previousScreenX; + const movementY = event.movementY || event.screenY - previousScreenY; + previousScreenX = event.screenX; + previousScreenY = event.screenY; + return movementX || movementY || false; +} +function setMouseMoving(event) { + if (!hasMouseMovement(event)) return; + mouseMoving = true; +} +function resetMouseMoving() { + mouseMoving = false; +} + +// node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef((props, ref) => render4(__spreadProps(__spreadValues({}, props), { ref }))); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const _a = props, { wrapElement, render: render4 } = _a, rest = __objRest(_a, ["wrapElement", "render"]); + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = __spreadProps(__spreadValues({}, render4.props), { ref: mergedRef }); + element = React7.cloneElement(render4, mergeProps2(rest, renderProps)); + } else if (render4) { + element = render4(rest); + } else { + element = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Type, __spreadValues({}, rest)); + } + if (wrapElement) { + return wrapElement(element); + } + return element; +} +function createHook(useProps) { + const useRole = (props = {}) => { + return useProps(props); + }; + useRole.displayName = useProps.name; + return useRole; +} +function createStoreContext(providers = [], scopedProviders = []) { + const context = React7.createContext(void 0); + const scopedContext = React7.createContext(void 0); + const useContext28 = () => React7.useContext(context); + const useScopedContext = (onlyScoped = false) => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (onlyScoped) return scoped; + return scoped || store; + }; + const useProviderContext = () => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (scoped && scoped === store) return; + return store; + }; + const ContextProvider = (props) => { + return providers.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(context.Provider, __spreadValues({}, props)) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(scopedContext.Provider, __spreadValues({}, props)) + ) })); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js +var ctx = createStoreContext(); +var useCollectionContext = ctx.useContext; +var useCollectionScopedContext = ctx.useScopedContext; +var useCollectionProviderContext = ctx.useProviderContext; +var CollectionContextProvider = ctx.ContextProvider; +var CollectionScopedContextProvider = ctx.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js +var import_react6 = __toESM(require_react(), 1); +var ctx2 = createStoreContext( + [CollectionContextProvider], + [CollectionScopedContextProvider] +); +var useCompositeContext = ctx2.useContext; +var useCompositeScopedContext = ctx2.useScopedContext; +var useCompositeProviderContext = ctx2.useProviderContext; +var CompositeContextProvider = ctx2.ContextProvider; +var CompositeScopedContextProvider = ctx2.ScopedContextProvider; +var CompositeItemContext = (0, import_react6.createContext)( + void 0 +); +var CompositeRowContext = (0, import_react6.createContext)( + void 0 +); + +// node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js +var import_react7 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react7.createContext)(null); +var TagRemoveIdContext = (0, import_react7.createContext)( + null +); +var ctx3 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx3.useContext; +var useTagScopedContext = ctx3.useScopedContext; +var useTagProviderContext = ctx3.useProviderContext; +var TagContextProvider = ctx3.ContextProvider; +var TagScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js +function getInternal(store, key) { + const internals = store.__unstableInternals; + invariant(internals, "Invalid store"); + return internals[key]; +} +function createStore(initialState, ...stores) { + let state = initialState; + let prevStateBatch = state; + let lastUpdate = /* @__PURE__ */ Symbol(); + let destroy = noop; + const instances = /* @__PURE__ */ new Set(); + const updatedKeys = /* @__PURE__ */ new Set(); + const setups = /* @__PURE__ */ new Set(); + const listeners = /* @__PURE__ */ new Set(); + const batchListeners = /* @__PURE__ */ new Set(); + const disposables = /* @__PURE__ */ new WeakMap(); + const listenerKeys = /* @__PURE__ */ new WeakMap(); + const storeSetup = (callback) => { + setups.add(callback); + return () => setups.delete(callback); + }; + const storeInit = () => { + const initialized = instances.size; + const instance = /* @__PURE__ */ Symbol(); + instances.add(instance); + const maybeDestroy = () => { + instances.delete(instance); + if (instances.size) return; + destroy(); + }; + if (initialized) return maybeDestroy; + const desyncs = getKeys(state).map( + (key) => chain( + ...stores.map((store) => { + var _a; + const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); + if (!storeState) return; + if (!hasOwnProperty(storeState, key)) return; + return sync(store, [key], (state2) => { + setState( + key, + state2[key], + // @ts-expect-error - Not public API. This is just to prevent + // infinite loops. + true + ); + }); + }) + ) + ); + const teardowns = []; + for (const setup2 of setups) { + teardowns.push(setup2()); + } + const cleanups = stores.map(init); + destroy = chain(...desyncs, ...teardowns, ...cleanups); + return maybeDestroy; + }; + const sub = (keys, listener, set = listeners) => { + set.add(listener); + listenerKeys.set(listener, keys); + return () => { + var _a; + (_a = disposables.get(listener)) == null ? void 0 : _a(); + disposables.delete(listener); + listenerKeys.delete(listener); + set.delete(listener); + }; + }; + const storeSubscribe = (keys, listener) => sub(keys, listener); + const storeSync = (keys, listener) => { + disposables.set(listener, listener(state, state)); + return sub(keys, listener); + }; + const storeBatch = (keys, listener) => { + disposables.set(listener, listener(state, prevStateBatch)); + return sub(keys, listener, batchListeners); + }; + const storePick = (keys) => createStore(pick(state, keys), finalStore); + const storeOmit = (keys) => createStore(omit2(state, keys), finalStore); + const getState = () => state; + const setState = (key, value, fromStores = false) => { + var _a; + if (!hasOwnProperty(state, key)) return; + const nextValue = applyState(value, state[key]); + if (nextValue === state[key]) return; + if (!fromStores) { + for (const store of stores) { + (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); + } + } + const prevState = state; + state = __spreadProps2(__spreadValues2({}, state), { [key]: nextValue }); + const thisUpdate = /* @__PURE__ */ Symbol(); + lastUpdate = thisUpdate; + updatedKeys.add(key); + const run = (listener, prev, uKeys) => { + var _a2; + const keys = listenerKeys.get(listener); + const updated = (k) => uKeys ? uKeys.has(k) : k === key; + if (!keys || keys.some(updated)) { + (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); + disposables.set(listener, listener(state, prev)); + } + }; + for (const listener of listeners) { + run(listener, prevState); + } + queueMicrotask(() => { + if (lastUpdate !== thisUpdate) return; + const snapshot = state; + for (const listener of batchListeners) { + run(listener, prevStateBatch, updatedKeys); + } + prevStateBatch = snapshot; + updatedKeys.clear(); + }); + }; + const finalStore = { + getState, + setState, + __unstableInternals: { + setup: storeSetup, + init: storeInit, + subscribe: storeSubscribe, + sync: storeSync, + batch: storeBatch, + pick: storePick, + omit: storeOmit + } + }; + return finalStore; +} +function setup(store, ...args) { + if (!store) return; + return getInternal(store, "setup")(...args); +} +function init(store, ...args) { + if (!store) return; + return getInternal(store, "init")(...args); +} +function subscribe(store, ...args) { + if (!store) return; + return getInternal(store, "subscribe")(...args); +} +function sync(store, ...args) { + if (!store) return; + return getInternal(store, "sync")(...args); +} +function batch(store, ...args) { + if (!store) return; + return getInternal(store, "batch")(...args); +} +function omit22(store, ...args) { + if (!store) return; + return getInternal(store, "omit")(...args); +} +function pick2(store, ...args) { + if (!store) return; + return getInternal(store, "pick")(...args); +} +function mergeStore(...stores) { + const initialState = stores.reduce((state, store2) => { + var _a; + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (!nextState) return state; + return Object.assign(state, nextState); + }, {}); + const store = createStore(initialState, ...stores); + return Object.assign({}, ...stores, store); +} +function throwOnConflictingProps(props, store) { + if (false) return; + if (!store) return; + const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { + var _a; + const stateKey = key.replace("default", ""); + return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; + }); + if (!defaultKeys.length) return; + const storeState = store.getState(); + const conflictingProps = defaultKeys.filter( + (key) => hasOwnProperty(storeState, key) + ); + if (!conflictingProps.length) return; + throw new Error( + `Passing a store prop in conjunction with a default state is not supported. + +const store = useSelectStore(); + + ^ ^ + +Instead, pass the default state to the topmost store: + +const store = useSelectStore({ defaultValue: "Apple" }); + + +See https://github.com/ariakit/ariakit/pull/2745 for more details. + +If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit +` + ); +} + +// node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js +var React8 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var { useSyncExternalStore } = import_shim.default; +var noopSubscribe = () => () => { +}; +function useStoreState(store, keyOrSelector = identity) { + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const key = typeof keyOrSelector === "string" ? keyOrSelector : null; + const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; + const state = store == null ? void 0 : store.getState(); + if (selector2) return selector2(state); + if (!state) return; + if (!key) return; + if (!hasOwnProperty(state, key)) return; + return state[key]; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreStateObject(store, object) { + const objRef = React8.useRef( + {} + ); + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const state = store == null ? void 0 : store.getState(); + let updated = false; + const obj = objRef.current; + for (const prop in object) { + const keyOrSelector = object[prop]; + if (typeof keyOrSelector === "function") { + const value = keyOrSelector(state); + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + if (typeof keyOrSelector === "string") { + if (!state) continue; + if (!hasOwnProperty(state, keyOrSelector)) continue; + const value = state[keyOrSelector]; + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + } + if (updated) { + objRef.current = __spreadValues({}, obj); + } + return objRef.current; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreProps(store, props, key, setKey) { + const value = hasOwnProperty(props, key) ? props[key] : void 0; + const setValue = setKey ? props[setKey] : void 0; + const propsRef = useLiveRef({ value, setValue }); + useSafeLayoutEffect(() => { + return sync(store, [key], (state, prev) => { + const { value: value2, setValue: setValue2 } = propsRef.current; + if (!setValue2) return; + if (state[key] === prev[key]) return; + if (state[key] === value2) return; + setValue2(state[key]); + }); + }, [store, key]); + useSafeLayoutEffect(() => { + if (value === void 0) return; + store.setState(key, value); + return batch(store, [key], () => { + if (value === void 0) return; + store.setState(key, value); + }); + }); +} +function useStore(createStore2, props) { + const [store, setStore] = React8.useState(() => createStore2(props)); + useSafeLayoutEffect(() => init(store), [store]); + const useState22 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => __spreadProps(__spreadValues({}, store), { useState: useState22 }), + [store, useState22] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2(__spreadValues(__spreadValues({}, props), store2.getState()))); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js +function getCommonParent(items) { + var _a; + const firstItem = items.find((item) => !!item.element); + const lastItem = [...items].reverse().find((item) => !!item.element); + let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; + while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { + const parent = parentElement; + if (lastItem && parent.contains(lastItem.element)) { + return parentElement; + } + parentElement = parentElement.parentElement; + } + return getDocument(parentElement).body; +} +function getPrivateStore(store) { + return store == null ? void 0 : store.__unstablePrivateStore; +} +function createCollectionStore(props = {}) { + var _a; + throwOnConflictingProps(props, props.store); + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const items = defaultValue( + props.items, + syncState == null ? void 0 : syncState.items, + props.defaultItems, + [] + ); + const itemsMap = new Map(items.map((item) => [item.id, item])); + const initialState = { + items, + renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) + }; + const syncPrivateStore = getPrivateStore(props.store); + const privateStore = createStore( + { items, renderedItems: initialState.renderedItems }, + syncPrivateStore + ); + const collection = createStore(initialState, props.store); + const sortItems = (renderedItems) => { + const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); + privateStore.setState("renderedItems", sortedItems); + collection.setState("renderedItems", sortedItems); + }; + setup(collection, () => init(privateStore)); + setup(privateStore, () => { + return batch(privateStore, ["items"], (state) => { + collection.setState("items", state.items); + }); + }); + setup(privateStore, () => { + return batch(privateStore, ["renderedItems"], (state) => { + let firstRun = true; + let raf = requestAnimationFrame(() => { + const { renderedItems } = collection.getState(); + if (state.renderedItems === renderedItems) return; + sortItems(state.renderedItems); + }); + if (typeof IntersectionObserver !== "function") { + return () => cancelAnimationFrame(raf); + } + const ioCallback = () => { + if (firstRun) { + firstRun = false; + return; + } + cancelAnimationFrame(raf); + raf = requestAnimationFrame(() => sortItems(state.renderedItems)); + }; + const root = getCommonParent(state.renderedItems); + const observer = new IntersectionObserver(ioCallback, { root }); + for (const item of state.renderedItems) { + if (!item.element) continue; + observer.observe(item.element); + } + return () => { + cancelAnimationFrame(raf); + observer.disconnect(); + }; + }); + }); + const mergeItem = (item, setItems, canDeleteFromMap = false) => { + let prevItem; + setItems((items2) => { + const index = items2.findIndex(({ id }) => id === item.id); + const nextItems = items2.slice(); + if (index !== -1) { + prevItem = items2[index]; + const nextItem = __spreadValues2(__spreadValues2({}, prevItem), item); + nextItems[index] = nextItem; + itemsMap.set(item.id, nextItem); + } else { + nextItems.push(item); + itemsMap.set(item.id, item); + } + return nextItems; + }); + const unmergeItem = () => { + setItems((items2) => { + if (!prevItem) { + if (canDeleteFromMap) { + itemsMap.delete(item.id); + } + return items2.filter(({ id }) => id !== item.id); + } + const index = items2.findIndex(({ id }) => id === item.id); + if (index === -1) return items2; + const nextItems = items2.slice(); + nextItems[index] = prevItem; + itemsMap.set(item.id, prevItem); + return nextItems; + }); + }; + return unmergeItem; + }; + const registerItem = (item) => mergeItem( + item, + (getItems) => privateStore.setState("items", getItems), + true + ); + return __spreadProps2(__spreadValues2({}, collection), { + registerItem, + renderItem: (item) => chain( + registerItem(item), + mergeItem( + item, + (getItems) => privateStore.setState("renderedItems", getItems) + ) + ), + item: (id) => { + if (!id) return null; + let item = itemsMap.get(id); + if (!item) { + const { items: items2 } = privateStore.getState(); + item = items2.find((item2) => item2.id === id); + if (item) { + itemsMap.set(id, item); + } + } + return item || null; + }, + // @ts-expect-error Internal + __unstablePrivateStore: privateStore + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js +function toArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return typeof arg !== "undefined" ? [arg] : []; +} +function flatten2DArray(array) { + const flattened = []; + for (const row of array) { + flattened.push(...row); + } + return flattened; +} +function reverseArray(array) { + return array.slice().reverse(); +} + +// node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItems(items, excludeId) { + return items.filter((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getItemsInRow(items, rowId) { + return items.filter((item) => item.rowId === rowId); +} +function flipItems(items, activeId, shouldInsertNullItem = false) { + const index = items.findIndex((item) => item.id === activeId); + return [ + ...items.slice(index + 1), + ...shouldInsertNullItem ? [NULL_ITEM] : [], + ...items.slice(0, index) + ]; +} +function groupItemsByRows(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function getMaxRowLength(array) { + let maxLength = 0; + for (const { length } of array) { + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} +function createEmptyItem(rowId) { + return { + id: "__EMPTY_ITEM__", + disabled: true, + rowId + }; +} +function normalizeRows(rows, activeId, focusShift) { + const maxLength = getMaxRowLength(rows); + for (const row of rows) { + for (let i2 = 0; i2 < maxLength; i2 += 1) { + const item = row[i2]; + if (!item || focusShift && item.disabled) { + const isFirst = i2 === 0; + const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i2 - 1]; + row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); + } + } + } + return rows; +} +function verticalizeItems(items) { + const rows = groupItemsByRows(items); + const maxLength = getMaxRowLength(rows); + const verticalized = []; + for (let i2 = 0; i2 < maxLength; i2 += 1) { + for (const row of rows) { + const item = row[i2]; + if (item) { + verticalized.push(__spreadProps2(__spreadValues2({}, item), { + // If there's no rowId, it means that it's not a grid composite, but + // a single row instead. So, instead of verticalizing it, that is, + // assigning a different rowId based on the column index, we keep it + // undefined so they will be part of the same row. This is useful + // when using up/down on one-dimensional composites. + rowId: item.rowId ? `${i2}` : void 0 + })); + } + } + } + return verticalized; +} +function createCompositeStore(props = {}) { + var _a; + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const collection = createCollectionStore(props); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId + ); + const initialState = __spreadProps2(__spreadValues2({}, collection.getState()), { + id: defaultValue( + props.id, + syncState == null ? void 0 : syncState.id, + `id-${Math.random().toString(36).slice(2, 8)}` + ), + activeId, + baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + activeId === null + ), + moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "both" + ), + rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + false + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), + focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) + }); + const composite = createStore(initialState, collection, props.store); + setup( + composite, + () => sync(composite, ["renderedItems", "activeId"], (state) => { + composite.setState("activeId", (activeId2) => { + var _a2; + if (activeId2 !== void 0) return activeId2; + return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; + }); + }) + ); + const getNextId = (direction = "next", options = {}) => { + var _a2, _b; + const defaultState = composite.getState(); + const { + skip = 0, + activeId: activeId2 = defaultState.activeId, + focusShift = defaultState.focusShift, + focusLoop = defaultState.focusLoop, + focusWrap = defaultState.focusWrap, + includesBaseElement = defaultState.includesBaseElement, + renderedItems = defaultState.renderedItems, + rtl = defaultState.rtl + } = options; + const isVerticalDirection = direction === "up" || direction === "down"; + const isNextDirection = direction === "next" || direction === "down"; + const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; + const canShift = focusShift && !skip; + let items = !isVerticalDirection ? renderedItems : flatten2DArray( + normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id; + } + const isGrid2 = items.some((item) => item.rowId); + const activeIndex = items.indexOf(activeItem); + const nextItems = items.slice(activeIndex + 1); + const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); + if (skip) { + const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); + const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. + nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; + return nextItem2 == null ? void 0 : nextItem2.id; + } + const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); + const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); + const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; + if (canLoop) { + const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); + const sortedItems = flipItems(loopItems, activeId2, hasNullItem); + const nextItem2 = findFirstEnabledItem(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem( + // We can use nextItems, which contains all the next items, including + // items from other rows, to wrap between rows. However, if there is a + // null item (the composite container), we'll only use the next items in + // the row. So moving next from the last item will focus on the + // composite container. On grid composites, horizontal navigation never + // focuses on the composite container, only vertical. + hasNullItem ? nextItemsInRow : nextItems, + activeId2 + ); + const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; + return nextId; + } + const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return __spreadProps2(__spreadValues2(__spreadValues2({}, collection), composite), { + setBaseElement: (element) => composite.setState("baseElement", element), + setActiveId: (id) => composite.setState("activeId", id), + move: (id) => { + if (id === void 0) return; + composite.setState("activeId", id); + composite.setState("moves", (moves) => moves + 1); + }, + first: () => { + var _a2; + return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; + }, + next: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("next", options); + }, + previous: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("previous", options); + }, + down: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("down", options); + }, + up: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("up", options); + } + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return __spreadValues({ id }, props); +} +function useCompositeStoreProps(store, update2, props) { + store = useCollectionStoreProps(store, update2, props); + useStoreProps(store, props, "activeId", "setActiveId"); + useStoreProps(store, props, "includesBaseElement"); + useStoreProps(store, props, "virtualFocus"); + useStoreProps(store, props, "orientation"); + useStoreProps(store, props, "rtl"); + useStoreProps(store, props, "focusLoop"); + useStoreProps(store, props, "focusWrap"); + useStoreProps(store, props, "focusShift"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js +function createDisclosureStore(props = {}) { + const store = mergeStore( + props.store, + omit22(props.disclosure, ["contentElement", "disclosureElement"]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const open = defaultValue( + props.open, + syncState == null ? void 0 : syncState.open, + props.defaultOpen, + false + ); + const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); + const initialState = { + open, + animated, + animating: !!animated && open, + mounted: open, + contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), + disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) + }; + const disclosure = createStore(initialState, store); + setup( + disclosure, + () => sync(disclosure, ["animated", "animating"], (state) => { + if (state.animated) return; + disclosure.setState("animating", false); + }) + ); + setup( + disclosure, + () => subscribe(disclosure, ["open"], () => { + if (!disclosure.getState().animated) return; + disclosure.setState("animating", true); + }) + ); + setup( + disclosure, + () => sync(disclosure, ["open", "animating"], (state) => { + disclosure.setState("mounted", state.open || state.animating); + }) + ); + return __spreadProps2(__spreadValues2({}, disclosure), { + disclosure: props.disclosure, + setOpen: (value) => disclosure.setState("open", value), + show: () => disclosure.setState("open", true), + hide: () => disclosure.setState("open", false), + toggle: () => disclosure.setState("open", (open2) => !open2), + stopAnimation: () => disclosure.setState("animating", false), + setContentElement: (value) => disclosure.setState("contentElement", value), + setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js +function useDisclosureStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store, props.disclosure]); + useStoreProps(store, props, "open", "setOpen"); + useStoreProps(store, props, "mounted", "setMounted"); + useStoreProps(store, props, "animated"); + return Object.assign(store, { disclosure: props.disclosure }); +} + +// node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js +function createPopoverStore(_a = {}) { + var _b = _a, { + popover: otherPopover + } = _b, props = __objRest2(_b, [ + "popover" + ]); + const store = mergeStore( + props.store, + omit22(otherPopover, [ + "arrowElement", + "anchorElement", + "contentElement", + "popoverElement", + "disclosureElement" + ]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const dialog = createDialogStore(__spreadProps2(__spreadValues2({}, props), { store })); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = __spreadProps2(__spreadValues2({}, dialog.getState()), { + placement, + currentPlacement: placement, + anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), + popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), + arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), + rendered: /* @__PURE__ */ Symbol("rendered") + }); + const popover = createStore(initialState, dialog, store); + return __spreadProps2(__spreadValues2(__spreadValues2({}, dialog), popover), { + setAnchorElement: (element) => popover.setState("anchorElement", element), + setPopoverElement: (element) => popover.setState("popoverElement", element), + setArrowElement: (element) => popover.setState("arrowElement", element), + render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore(_a = {}) { + var _b = _a, { + tag + } = _b, props = __objRest2(_b, [ + "tag" + ]); + const store = mergeStore(props.store, pick2(tag, ["value", "rtl"])); + throwOnConflictingProps(props, store); + const tagState = tag == null ? void 0 : tag.getState(); + const syncState = store == null ? void 0 : store.getState(); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId, + null + ); + const composite = createCompositeStore(__spreadProps2(__spreadValues2({}, props), { + activeId, + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + true + ), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "vertical" + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + true + ) + })); + const popover = createPopoverStore(__spreadProps2(__spreadValues2({}, props), { + placement: defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom-start" + ) + })); + const value = defaultValue( + props.value, + syncState == null ? void 0 : syncState.value, + props.defaultValue, + "" + ); + const selectedValue = defaultValue( + props.selectedValue, + syncState == null ? void 0 : syncState.selectedValue, + tagState == null ? void 0 : tagState.values, + props.defaultSelectedValue, + "" + ); + const multiSelectable = Array.isArray(selectedValue); + const initialState = __spreadProps2(__spreadValues2(__spreadValues2({}, composite.getState()), popover.getState()), { + value, + selectedValue, + resetValueOnSelect: defaultValue( + props.resetValueOnSelect, + syncState == null ? void 0 : syncState.resetValueOnSelect, + multiSelectable + ), + resetValueOnHide: defaultValue( + props.resetValueOnHide, + syncState == null ? void 0 : syncState.resetValueOnHide, + multiSelectable && !tag + ), + activeValue: syncState == null ? void 0 : syncState.activeValue + }); + const combobox = createStore(initialState, composite, popover, store); + if (isTouchSafari) { + setup( + combobox, + () => sync(combobox, ["virtualFocus"], () => { + combobox.setState("virtualFocus", false); + }) + ); + } + setup(combobox, () => { + if (!tag) return; + return chain( + sync(combobox, ["selectedValue"], (state) => { + if (!Array.isArray(state.selectedValue)) return; + tag.setValues(state.selectedValue); + }), + sync(tag, ["values"], (state) => { + combobox.setState("selectedValue", state.values); + }) + ); + }); + setup( + combobox, + () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { + if (!state.resetValueOnHide) return; + if (state.mounted) return; + combobox.setState("value", value); + }) + ); + setup( + combobox, + () => sync(combobox, ["open"], (state) => { + if (state.open) return; + combobox.setState("activeId", activeId); + combobox.setState("moves", 0); + }) + ); + setup( + combobox, + () => sync(combobox, ["moves", "activeId"], (state, prevState) => { + if (state.moves === prevState.moves) { + combobox.setState("activeValue", void 0); + } + }) + ); + setup( + combobox, + () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { + if (state.moves === prev.moves) return; + const { activeId: activeId2 } = combobox.getState(); + const activeItem = composite.item(activeId2); + combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); + }) + ); + return __spreadProps2(__spreadValues2(__spreadValues2(__spreadValues2({}, popover), composite), combobox), { + tag, + setValue: (value2) => combobox.setState("value", value2), + resetValue: () => combobox.setState("value", initialState.value), + setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = __spreadProps(__spreadValues({}, props), { + tag: props.tag !== void 0 ? props.tag : tag + }); + return useCompositeStoreOptions(props); +} +function useComboboxStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.tag]); + useStoreProps(store, props, "value", "setValue"); + useStoreProps(store, props, "selectedValue", "setSelectedValue"); + useStoreProps(store, props, "resetValueOnHide"); + useStoreProps(store, props, "resetValueOnSelect"); + return Object.assign( + useCompositeStoreProps( + usePopoverStoreProps(store, update2, props), + update2, + props + ), + { tag: props.tag } + ); +} +function useComboboxStore(props = {}) { + props = useComboboxStoreOptions(props); + const [store, update2] = useStore(createComboboxStore, props); + return useComboboxStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js +var ctx4 = createStoreContext(); +var useDisclosureContext = ctx4.useContext; +var useDisclosureScopedContext = ctx4.useScopedContext; +var useDisclosureProviderContext = ctx4.useProviderContext; +var DisclosureContextProvider = ctx4.ContextProvider; +var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js +var import_react8 = __toESM(require_react(), 1); +var ctx5 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx5.useContext; +var useDialogScopedContext = ctx5.useScopedContext; +var useDialogProviderContext = ctx5.useProviderContext; +var DialogContextProvider = ctx5.ContextProvider; +var DialogScopedContextProvider = ctx5.ScopedContextProvider; +var DialogHeadingContext = (0, import_react8.createContext)(void 0); +var DialogDescriptionContext = (0, import_react8.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js +var ctx6 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx6.useContext; +var usePopoverScopedContext = ctx6.useScopedContext; +var usePopoverProviderContext = ctx6.useProviderContext; +var PopoverContextProvider = ctx6.ContextProvider; +var PopoverScopedContextProvider = ctx6.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js +var import_react9 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react9.createContext)( + void 0 +); +var ctx7 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx7.useContext; +var useComboboxScopedContext = ctx7.useScopedContext; +var useComboboxProviderContext = ctx7.useProviderContext; +var ComboboxContextProvider = ctx7.ContextProvider; +var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react9.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react9.createContext)(false); + +// node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js +var TagName = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = usePopoverProviderContext(); + store = store || context; + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) + }); + return props; + } +); +var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { + const htmlProps = usePopoverAnchor(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js +function findFirstEnabledItem2(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItem(store, id) { + if (!id) return null; + return store.item(id) || null; +} +function groupItemsByRows2(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function selectTextField(element, collapseToEnd = false) { + if (isTextField(element)) { + element.setSelectionRange( + collapseToEnd ? element.value.length : 0, + element.value.length + ); + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + selection == null ? void 0 : selection.selectAllChildren(element); + if (collapseToEnd) { + selection == null ? void 0 : selection.collapseToEnd(); + } + } +} +var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); +function focusSilently(element) { + element[FOCUS_SILENTLY] = true; + element.focus({ preventScroll: true }); +} +function silentlyFocused(element) { + const isSilentlyFocused = element[FOCUS_SILENTLY]; + delete element[FOCUS_SILENTLY]; + return isSilentlyFocused; +} +function isItem(store, element, exclude) { + if (!element) return false; + if (element === exclude) return false; + const item = store.item(element.id); + if (!item) return false; + if (exclude && item.element === exclude) return false; + return true; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react10 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react10.createContext)(true); + +// node_modules/@ariakit/core/esm/utils/focus.js +var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; +function isFocusable(element) { + if (!element.matches(selector)) return false; + if (!isVisible(element)) return false; + if (element.closest("[inert]")) return false; + return true; +} +function getClosestFocusable(element) { + while (element && !isFocusable(element)) { + element = element.closest(selector); + } + return element || null; +} +function hasFocus(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (activeElement === element) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + return activeDescendant === element.id; +} +function hasFocusWithin(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (contains(element, activeElement)) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + if (!("id" in element)) return false; + if (activeDescendant === element.id) return true; + return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); +} +function focusIfNeeded(element) { + if (!hasFocusWithin(element) && isFocusable(element)) { + element.focus(); + } +} +function focusIntoView(element, options) { + if (!("scrollIntoView" in element)) { + element.focus(); + } else { + element.focus({ preventScroll: true }); + element.scrollIntoView(__spreadValues2({ block: "nearest", inline: "nearest" }, options)); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js +var import_react11 = __toESM(require_react(), 1); +var TagName2 = "div"; +var isSafariBrowser = isSafari(); +var alwaysFocusVisibleInputTypes = [ + "text", + "search", + "url", + "tel", + "email", + "password", + "number", + "date", + "month", + "week", + "time", + "datetime", + "datetime-local" +]; +var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); +function markSafariFocusAncestor(element, value) { + if (!element) return; + element[safariFocusAncestorSymbol] = value; +} +function isAlwaysFocusVisible(element) { + const { tagName, readOnly, type } = element; + if (tagName === "TEXTAREA" && !readOnly) return true; + if (tagName === "SELECT" && !readOnly) return true; + if (tagName === "INPUT" && !readOnly) { + return alwaysFocusVisibleInputTypes.includes(type); + } + if (element.isContentEditable) return true; + const role = element.getAttribute("role"); + if (role === "combobox" && element.dataset.name) { + return true; + } + return false; +} +function getLabels(element) { + if ("labels" in element) { + return element.labels; + } + return null; +} +function isNativeCheckboxOrRadio(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "input" && element.type) { + return element.type === "radio" || element.type === "checkbox"; + } + return false; +} +function isNativeTabbable(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; +} +function supportsDisabledAttribute(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; +} +function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { + if (!focusable) { + return tabIndexProp; + } + if (trulyDisabled) { + if (nativeTabbable && !supportsDisabled) { + return -1; + } + return; + } + if (nativeTabbable) { + return tabIndexProp; + } + return tabIndexProp || 0; +} +function useDisableEvent(onEvent, disabled) { + return useEvent((event) => { + onEvent == null ? void 0 : onEvent(event); + if (event.defaultPrevented) return; + if (disabled) { + event.stopPropagation(); + event.preventDefault(); + } + }); +} +var isKeyboardModality = true; +function onGlobalMouseDown(event) { + const target = event.target; + if (target && "hasAttribute" in target) { + if (!target.hasAttribute("data-focus-visible")) { + isKeyboardModality = false; + } + } +} +function onGlobalKeyDown(event) { + if (event.metaKey) return; + if (event.ctrlKey) return; + if (event.altKey) return; + isKeyboardModality = true; +} +var useFocusable = createHook( + function useFocusable2(_a) { + var _b = _a, { + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible + } = _b, props = __objRest(_b, [ + "focusable", + "accessibleWhenDisabled", + "autoFocus", + "onFocusVisible" + ]); + const ref = (0, import_react11.useRef)(null); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + }, [focusable]); + if (isSafariBrowser) { + (0, import_react11.useEffect)(() => { + if (!focusable) return; + const element = ref.current; + if (!element) return; + if (!isNativeCheckboxOrRadio(element)) return; + const labels = getLabels(element); + if (!labels) return; + const onMouseUp = () => queueMicrotask(() => element.focus()); + for (const label of labels) { + label.addEventListener("mouseup", onMouseUp); + } + return () => { + for (const label of labels) { + label.removeEventListener("mouseup", onMouseUp); + } + }; + }, [focusable]); + } + const disabled = focusable && disabledFromProps(props); + const trulyDisabled = !!disabled && !accessibleWhenDisabled; + const [focusVisible, setFocusVisible] = (0, import_react11.useState)(false); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (!focusVisible) return; + const element = ref.current; + if (!element) return; + if (typeof IntersectionObserver === "undefined") return; + const observer = new IntersectionObserver(() => { + if (!isFocusable(element)) { + setFocusVisible(false); + } + }); + observer.observe(element); + return () => observer.disconnect(); + }, [focusable, focusVisible]); + const onKeyPressCapture = useDisableEvent( + props.onKeyPressCapture, + disabled + ); + const onMouseDownCapture = useDisableEvent( + props.onMouseDownCapture, + disabled + ); + const onClickCapture = useDisableEvent(props.onClickCapture, disabled); + const onMouseDownProp = props.onMouseDown; + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + const element = event.currentTarget; + if (!isSafariBrowser) return; + if (isPortalEvent(event)) return; + if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; + let receivedFocus = false; + const onFocus = () => { + receivedFocus = true; + }; + const options = { capture: true, once: true }; + element.addEventListener("focusin", onFocus, options); + const focusableContainer = getClosestFocusable(element.parentElement); + markSafariFocusAncestor(focusableContainer, true); + queueBeforeEvent(element, "mouseup", () => { + element.removeEventListener("focusin", onFocus, true); + markSafariFocusAncestor(focusableContainer, false); + if (receivedFocus) return; + focusIfNeeded(element); + }); + }); + const handleFocusVisible = (event, currentTarget) => { + if (currentTarget) { + event.currentTarget = currentTarget; + } + if (!focusable) return; + const element = event.currentTarget; + if (!element) return; + if (!hasFocus(element)) return; + onFocusVisible == null ? void 0 : onFocusVisible(event); + if (event.defaultPrevented) return; + element.dataset.focusVisible = "true"; + setFocusVisible(true); + }; + const onKeyDownCaptureProp = props.onKeyDownCapture; + const onKeyDownCapture = useEvent((event) => { + onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (focusVisible) return; + if (event.metaKey) return; + if (event.altKey) return; + if (event.ctrlKey) return; + if (!isSelfTarget(event)) return; + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + queueBeforeEvent(element, "focusout", applyFocusVisible); + }); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (!isSelfTarget(event)) { + setFocusVisible(false); + return; + } + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { + queueBeforeEvent(event.target, "focusout", applyFocusVisible); + } else { + setFocusVisible(false); + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + onBlurProp == null ? void 0 : onBlurProp(event); + if (!focusable) return; + if (!isFocusEventOutside(event)) return; + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react11.useContext)(FocusableContext); + const autoFocusRef = useEvent((element) => { + if (!focusable) return; + if (!autoFocus) return; + if (!element) return; + if (!autoFocusOnShow) return; + queueMicrotask(() => { + if (hasFocus(element)) return; + if (!isFocusable(element)) return; + element.focus(); + }); + }); + const tagName = useTagName(ref); + const nativeTabbable = focusable && isNativeTabbable(tagName); + const supportsDisabled = focusable && supportsDisabledAttribute(tagName); + const styleProp = props.style; + const style = (0, import_react11.useMemo)(() => { + if (trulyDisabled) { + return __spreadValues({ pointerEvents: "none" }, styleProp); + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = __spreadProps(__spreadValues({ + "data-focus-visible": focusable && focusVisible || void 0, + "data-autofocus": autoFocus || void 0, + "aria-disabled": disabled || void 0 + }, props), { + ref: useMergeRefs(ref, autoFocusRef, props.ref), + style, + tabIndex: getTabIndex( + focusable, + trulyDisabled, + nativeTabbable, + supportsDisabled, + props.tabIndex + ), + disabled: supportsDisabled && trulyDisabled ? true : void 0, + // TODO: Test Focusable contentEditable. + contentEditable: disabled ? void 0 : props.contentEditable, + onKeyPressCapture, + onClickCapture, + onMouseDownCapture, + onMouseDown, + onKeyDownCapture, + onFocusCapture, + onBlur + }); + return removeUndefinedValues(props); + } +); +var Focusable = forwardRef22(function Focusable2(props) { + const htmlProps = useFocusable(props); + return createElement3(TagName2, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var TagName3 = "div"; +function isGrid(items) { + return items.some((item) => !!item.rowId); +} +function isPrintableKey(event) { + const target = event.target; + if (target && !isTextField(target)) return false; + return event.key.length === 1 && !event.ctrlKey && !event.metaKey; +} +function isModifierKey(event) { + return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; +} +function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { + return useEvent((event) => { + var _a; + onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); + if (event.defaultPrevented) return; + if (event.isPropagationStopped()) return; + if (!isSelfTarget(event)) return; + if (isModifierKey(event)) return; + if (isPrintableKey(event)) return; + const state = store.getState(); + const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; + if (!activeElement) return; + const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); + const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; + if (activeElement !== previousElement) { + activeElement.focus(); + } + if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { + event.preventDefault(); + } + if (event.currentTarget.contains(activeElement)) { + event.stopPropagation(); + } + }); +} +function findFirstEnabledItemInTheLastRow(items) { + return findFirstEnabledItem2( + flatten2DArray(reverseArray(groupItemsByRows2(items))) + ); +} +function useScheduleFocus(store) { + const [scheduled, setScheduled] = (0, import_react12.useState)(false); + const schedule = (0, import_react12.useCallback)(() => setScheduled(true), []); + const activeItem = store.useState( + (state) => getEnabledItem(store, state.activeId) + ); + (0, import_react12.useEffect)(() => { + const activeElement = activeItem == null ? void 0 : activeItem.element; + if (!scheduled) return; + if (!activeElement) return; + setScheduled(false); + activeElement.focus({ preventScroll: true }); + }, [activeItem, scheduled]); + return schedule; +} +var useComposite = createHook( + function useComposite2(_a) { + var _b = _a, { + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true + } = _b, props = __objRest(_b, [ + "store", + "composite", + "focusOnMove", + "moveOnKeyPress" + ]); + const context = useCompositeProviderContext(); + store = store || context; + invariant( + store, + "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." + ); + const ref = (0, import_react12.useRef)(null); + const previousElementRef = (0, import_react12.useRef)(null); + const scheduleFocus = useScheduleFocus(store); + const moves = store.useState("moves"); + const [, setBaseElement] = useTransactionState( + composite ? store.setBaseElement : null + ); + (0, import_react12.useEffect)(() => { + var _a2; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + if (!itemElement) return; + focusIntoView(itemElement); + }, [store, moves, composite, focusOnMove]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!moves) return; + if (!composite) return; + const { baseElement, activeId: activeId2 } = store.getState(); + const isSelfAcive = activeId2 === null; + if (!isSelfAcive) return; + if (!baseElement) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (previousElement) { + fireBlurEvent(previousElement, { relatedTarget: baseElement }); + } + if (!hasFocus(baseElement)) { + baseElement.focus(); + } + }, [store, moves, composite]); + const activeId = store.useState("activeId"); + const virtualFocus = store.useState("virtualFocus"); + useSafeLayoutEffect(() => { + var _a2; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; + const relatedTarget = activeElement || getActiveElement(previousElement); + if (relatedTarget === previousElement) return; + fireBlurEvent(previousElement, { relatedTarget }); + }, [store, activeId, virtualFocus, composite]); + const onKeyDownCapture = useKeyboardEventProxy( + store, + props.onKeyDownCapture, + previousElementRef + ); + const onKeyUpCapture = useKeyboardEventProxy( + store, + props.onKeyUpCapture, + previousElementRef + ); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (!virtualFocus2) return; + const previousActiveElement = event.relatedTarget; + const isSilentlyFocused = silentlyFocused(event.currentTarget); + if (isSelfTarget(event) && isSilentlyFocused) { + event.stopPropagation(); + previousElementRef.current = previousActiveElement; + } + }); + const onFocusProp = props.onFocus; + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (!composite) return; + if (!store) return; + const { relatedTarget } = event; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (virtualFocus2) { + if (isSelfTarget(event) && !isItem(store, relatedTarget)) { + queueMicrotask(scheduleFocus); + } + } else if (isSelfTarget(event)) { + store.setActiveId(null); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + var _a2; + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); + if (!virtualFocus2) return; + const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + const nextActiveElement = event.relatedTarget; + const nextActiveElementIsItem = isItem(store, nextActiveElement); + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (isSelfTarget(event) && nextActiveElementIsItem) { + if (nextActiveElement === activeElement) { + if (previousElement && previousElement !== nextActiveElement) { + fireBlurEvent(previousElement, event); + } + } else if (activeElement) { + fireBlurEvent(activeElement, event); + } else if (previousElement) { + fireBlurEvent(previousElement, event); + } + event.stopPropagation(); + } else { + const targetIsItem = isItem(store, event.target); + if (!targetIsItem && activeElement) { + fireBlurEvent(activeElement, event); + } + } + }); + const onKeyDownProp = props.onKeyDown; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + var _a2; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; + const isVertical = orientation !== "horizontal"; + const isHorizontal = orientation !== "vertical"; + const grid = isGrid(renderedItems); + const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; + if (isHorizontalKey && isTextField(event.currentTarget)) return; + const up = () => { + if (grid) { + const item = findFirstEnabledItemInTheLastRow(renderedItems); + return item == null ? void 0 : item.id; + } + return store == null ? void 0 : store.last(); + }; + const keyMap = { + ArrowUp: (grid || isVertical) && up, + ArrowRight: (grid || isHorizontal) && store.first, + ArrowDown: (grid || isVertical) && store.first, + ArrowLeft: (grid || isHorizontal) && store.last, + Home: store.first, + End: store.last, + PageUp: store.first, + PageDown: store.last + }; + const action = keyMap[event.key]; + if (action) { + const id = action(); + if (id !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(id); + } + } + }); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a2; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; + }); + props = __spreadProps(__spreadValues({ + "aria-activedescendant": activeDescendant + }, props), { + ref: useMergeRefs(ref, setBaseElement, props.ref), + onKeyDownCapture, + onKeyUpCapture, + onFocusCapture, + onFocus, + onBlurCapture, + onKeyDown + }); + const focusable = store.useState( + (state) => composite && (state.virtualFocus || state.activeId === null) + ); + props = useFocusable(__spreadValues({ focusable }, props)); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName3, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react13 = __toESM(require_react(), 1); +var TagName4 = "input"; +function isFirstItemAutoSelected(items, activeValue, autoSelect) { + if (!autoSelect) return false; + const firstItem = items.find((item) => !item.disabled && item.value); + return (firstItem == null ? void 0 : firstItem.value) === activeValue; +} +function hasCompletionString(value, activeValue) { + if (!activeValue) return false; + if (value == null) return false; + value = normalizeString(value); + return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; +} +function isInputEvent(event) { + return event.type === "input"; +} +function isAriaAutoCompleteValue(value) { + return value === "inline" || value === "list" || value === "both" || value === "none"; +} +function getDefaultAutoSelectId(items) { + const item = items.find((item2) => { + var _a; + if (item2.disabled) return false; + return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; + }); + return item == null ? void 0 : item.id; +} +var useCombobox = createHook( + function useCombobox2(_a) { + var _b = _a, { + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list" + } = _b, props = __objRest(_b, [ + "store", + "focusable", + "autoSelect", + "getAutoSelectId", + "setValueOnChange", + "showMinLength", + "showOnChange", + "showOnMouseDown", + "showOnClick", + "showOnKeyDown", + "showOnKeyPress", + "blurActiveItemOnClick", + "setValueOnClick", + "moveOnKeyPress", + "autoComplete" + ]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react13.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react13.useRef)(false); + const composingRef = (0, import_react13.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react13.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react13.useRef)(); + (0, import_react13.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a2; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return; + } + return state.activeValue; + }); + const items = store.useState("renderedItems"); + const open = store.useState("open"); + const contentElement = store.useState("contentElement"); + const value = (0, import_react13.useMemo)(() => { + if (!inline) return storeValue; + if (!canInline) return storeValue; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (firstItemAutoSelected) { + if (hasCompletionString(storeValue, inlineActiveValue)) { + const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; + return storeValue + slice; + } + return storeValue; + } + return inlineActiveValue || storeValue; + }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); + (0, import_react13.useEffect)(() => { + const element = ref.current; + if (!element) return; + const onCompositeItemMove = () => setCanInline(true); + element.addEventListener("combobox-item-move", onCompositeItemMove); + return () => { + element.removeEventListener("combobox-item-move", onCompositeItemMove); + }; + }, []); + (0, import_react13.useEffect)(() => { + if (!inline) return; + if (!canInline) return; + if (!inlineActiveValue) return; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (!firstItemAutoSelected) return; + if (!hasCompletionString(storeValue, inlineActiveValue)) return; + let cleanup = noop; + queueMicrotask(() => { + const element = ref.current; + if (!element) return; + const { start: prevStart, end: prevEnd } = getTextboxSelection(element); + const nextStart = storeValue.length; + const nextEnd = inlineActiveValue.length; + setSelectionRange(element, nextStart, nextEnd); + cleanup = () => { + if (!hasFocus(element)) return; + const { start, end } = getTextboxSelection(element); + if (start !== nextStart) return; + if (end !== nextEnd) return; + setSelectionRange(element, prevStart, prevEnd); + }; + }); + return () => cleanup(); + }, [ + valueUpdated, + inline, + canInline, + inlineActiveValue, + items, + autoSelect, + storeValue + ]); + const scrollingElementRef = (0, import_react13.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react13.useRef)(null); + (0, import_react13.useEffect)(() => { + if (!open) return; + if (!contentElement) return; + const scrollingElement = getScrollingElement(contentElement); + if (!scrollingElement) return; + scrollingElementRef.current = scrollingElement; + const onUserScroll = () => { + canAutoSelectRef.current = false; + }; + const onScroll = () => { + if (!store) return; + if (!canAutoSelectRef.current) return; + const { activeId } = store.getState(); + if (activeId === null) return; + if (activeId === autoSelectIdRef.current) return; + canAutoSelectRef.current = false; + }; + const options = { passive: true, capture: true }; + scrollingElement.addEventListener("wheel", onUserScroll, options); + scrollingElement.addEventListener("touchmove", onUserScroll, options); + scrollingElement.addEventListener("scroll", onScroll, options); + return () => { + scrollingElement.removeEventListener("wheel", onUserScroll, true); + scrollingElement.removeEventListener("touchmove", onUserScroll, true); + scrollingElement.removeEventListener("scroll", onScroll, true); + }; + }, [open, contentElement, store]); + useSafeLayoutEffect(() => { + if (!storeValue) return; + if (composingRef.current) return; + canAutoSelectRef.current = true; + }, [storeValue]); + useSafeLayoutEffect(() => { + if (autoSelect !== "always" && open) return; + canAutoSelectRef.current = open; + }, [autoSelect, open]); + const resetValueOnSelect = store.useState("resetValueOnSelect"); + useUpdateEffect(() => { + var _a2, _b2; + const canAutoSelect = canAutoSelectRef.current; + if (!store) return; + if (!open) return; + if (!canAutoSelect && !resetValueOnSelect) return; + const { baseElement, contentElement: contentElement2, activeId } = store.getState(); + if (baseElement && !hasFocus(baseElement)) return; + if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { + const observer = new MutationObserver(forceValueUpdate); + observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); + return () => observer.disconnect(); + } + if (autoSelect && canAutoSelect) { + const userAutoSelectId = getAutoSelectIdProp(items); + const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react13.useEffect)(() => { + if (!inline) return; + const combobox = ref.current; + if (!combobox) return; + const elements = [combobox, contentElement].filter( + (value2) => !!value2 + ); + const onBlur2 = (event) => { + if (elements.every((el) => isFocusEventOutside(event, el))) { + store == null ? void 0 : store.setValue(value); + } + }; + for (const element of elements) { + element.addEventListener("focusout", onBlur2); + } + return () => { + for (const element of elements) { + element.removeEventListener("focusout", onBlur2); + } + }; + }, [inline, contentElement, store, value]); + const canShow = (event) => { + const currentTarget = event.currentTarget; + return currentTarget.value.length >= showMinLength; + }; + const onChangeProp = props.onChange; + const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); + const setValueOnChangeProp = useBooleanEvent( + // If the combobox is combined with tags, the value will be set by the tag + // input component. + setValueOnChange != null ? setValueOnChange : !store.tag + ); + const onChange = useEvent((event) => { + onChangeProp == null ? void 0 : onChangeProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const currentTarget = event.currentTarget; + const { value: value2, selectionStart, selectionEnd } = currentTarget; + const nativeEvent = event.nativeEvent; + canAutoSelectRef.current = true; + if (isInputEvent(nativeEvent)) { + if (nativeEvent.isComposing) { + canAutoSelectRef.current = false; + composingRef.current = true; + } + if (inline) { + const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; + const caretAtEnd = selectionStart === value2.length; + setCanInline(textInserted && caretAtEnd); + } + } + if (setValueOnChangeProp(event)) { + const isSameValue = value2 === store.getState().value; + store.setValue(value2); + queueMicrotask(() => { + setSelectionRange(currentTarget, selectionStart, selectionEnd); + }); + if (inline && autoSelect && isSameValue) { + forceValueUpdate(); + } + } + if (showOnChangeProp(event)) { + store.show(); + } + if (!autoSelect || !canAutoSelectRef.current) { + store.setActiveId(null); + } + }); + const onCompositionEndProp = props.onCompositionEnd; + const onCompositionEnd = useEvent((event) => { + canAutoSelectRef.current = true; + composingRef.current = false; + onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); + if (event.defaultPrevented) return; + if (!autoSelect) return; + forceValueUpdate(); + }); + const onMouseDownProp = props.onMouseDown; + const blurActiveItemOnClickProp = useBooleanEvent( + blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement) + ); + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (event.button) return; + if (event.ctrlKey) return; + if (!store) return; + if (blurActiveItemOnClickProp(event)) { + store.setActiveId(null); + } + if (setValueOnClickProp(event)) { + store.setValue(value); + } + if (showOnClickProp(event)) { + queueBeforeEvent(event.currentTarget, "mouseup", store.show); + } + }); + const onKeyDownProp = props.onKeyDown; + const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (!event.repeat) { + canAutoSelectRef.current = false; + } + if (event.defaultPrevented) return; + if (event.ctrlKey) return; + if (event.altKey) return; + if (event.shiftKey) return; + if (event.metaKey) return; + if (!store) return; + const { open: open2 } = store.getState(); + if (open2) return; + if (event.key === "ArrowUp" || event.key === "ArrowDown") { + if (showOnKeyPressProp(event)) { + event.preventDefault(); + store.show(); + } + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + canAutoSelectRef.current = false; + onBlurProp == null ? void 0 : onBlurProp(event); + if (event.defaultPrevented) return; + }); + const id = useId3(props.id); + const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; + const isActiveItem = store.useState((state) => state.activeId === null); + props = __spreadProps(__spreadValues({ + id, + role: "combobox", + "aria-autocomplete": ariaAutoComplete, + "aria-haspopup": getPopupRole(contentElement, "listbox"), + "aria-expanded": open, + "aria-controls": contentElement == null ? void 0 : contentElement.id, + "data-active-item": isActiveItem || void 0, + value + }, props), { + ref: useMergeRefs(ref, props.ref), + onChange, + onCompositionEnd, + onMouseDown, + onKeyDown, + onBlur + }); + props = useComposite(__spreadProps(__spreadValues({ + store, + focusable + }, props), { + // Enable inline autocomplete when the user moves from the combobox input + // to an item. + moveOnKeyPress: (event) => { + if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; + if (inline) setCanInline(true); + return true; + } + })); + props = usePopoverAnchor(__spreadValues({ store }, props)); + return __spreadValues({ autoComplete: "off" }, props); + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName4, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js +var import_react14 = __toESM(require_react(), 1); +var TagName5 = "button"; +function isNativeClick(event) { + if (!event.isTrusted) return false; + const element = event.currentTarget; + if (event.key === "Enter") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; + } + if (event.key === " ") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; + } + return false; +} +var symbol = /* @__PURE__ */ Symbol("command"); +var useCommand = createHook( + function useCommand2(_a) { + var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); + const ref = (0, import_react14.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); + (0, import_react14.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react14.useState)(false); + const activeRef = (0, import_react14.useRef)(false); + const disabled = disabledFromProps(props); + const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + const element = event.currentTarget; + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (!isSelfTarget(event)) return; + if (isTextField(element)) return; + if (element.isContentEditable) return; + const isEnter = clickOnEnter && event.key === "Enter"; + const isSpace = clickOnSpace && event.key === " "; + const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; + const shouldPreventSpace = event.key === " " && !clickOnSpace; + if (shouldPreventEnter || shouldPreventSpace) { + event.preventDefault(); + return; + } + if (isEnter || isSpace) { + const nativeClick = isNativeClick(event); + if (isEnter) { + if (!nativeClick) { + event.preventDefault(); + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + const click = () => fireClickEvent(element, eventInit); + if (isFirefox()) { + queueBeforeEvent(element, "keyup", click); + } else { + queueMicrotask(click); + } + } + } else if (isSpace) { + activeRef.current = true; + if (!nativeClick) { + event.preventDefault(); + setActive(true); + } + } + } + }); + const onKeyUpProp = props.onKeyUp; + const onKeyUp = useEvent((event) => { + onKeyUpProp == null ? void 0 : onKeyUpProp(event); + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (event.metaKey) return; + const isSpace = clickOnSpace && event.key === " "; + if (activeRef.current && isSpace) { + activeRef.current = false; + if (!isNativeClick(event)) { + event.preventDefault(); + setActive(false); + const element = event.currentTarget; + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = __spreadProps(__spreadValues(__spreadValues({ + "data-active": active || void 0, + type: isNativeButton ? "button" : void 0 + }, metadataProps), props), { + ref: useMergeRefs(ref, props.ref), + onKeyDown, + onKeyUp + }); + props = useFocusable(props); + return props; + } +); +var Command = forwardRef22(function Command2(props) { + const htmlProps = useCommand(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js +var import_react15 = __toESM(require_react(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "span"; +function normalizeValue(value) { + return normalizeString(value).toLowerCase(); +} +function getOffsets(string, values) { + const offsets = []; + for (const value of values) { + let pos = 0; + const length = value.length; + while (string.indexOf(value, pos) !== -1) { + const index = string.indexOf(value, pos); + if (index !== -1) { + offsets.push([index, length]); + } + pos = index + 1; + } + } + return offsets; +} +function filterOverlappingOffsets(offsets) { + return offsets.filter(([offset, length], i2, arr) => { + return !arr.some( + ([o2, l2], j2) => j2 !== i2 && o2 <= offset && o2 + l2 >= offset + length + ); + }); +} +function sortOffsets(offsets) { + return offsets.sort(([a2], [b2]) => a2 - b2); +} +function splitValue(itemValue, userValue) { + if (!itemValue) return itemValue; + if (!userValue) return itemValue; + const userValues = toArray(userValue).filter(Boolean).map(normalizeValue); + const parts = []; + const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + "span", + { + "data-autocomplete-value": autocomplete ? "" : void 0, + "data-user-value": autocomplete ? void 0 : "", + children: value + }, + parts.length + ); + const offsets = sortOffsets( + filterOverlappingOffsets( + // Convert userValues into a set to avoid duplicates + getOffsets(normalizeValue(itemValue), new Set(userValues)) + ) + ); + if (!offsets.length) { + parts.push(span(itemValue, true)); + return parts; + } + const [firstOffset] = offsets[0]; + const values = [ + itemValue.slice(0, firstOffset), + ...offsets.flatMap(([offset, length], i2) => { + var _a; + const value = itemValue.slice(offset, offset + length); + const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; + const nextValue = itemValue.slice(offset + length, nextOffset); + return [value, nextValue]; + }) + ]; + values.forEach((value, i2) => { + if (!value) return; + parts.push(span(value, i2 % 2 === 0)); + }); + return parts; +} +var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) { + var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]); + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react15.useContext)(ComboboxItemValueContext); + const itemValue = value != null ? value : itemContext; + const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); + const children = (0, import_react15.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = __spreadValues({ + children + }, props); + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName6, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js +var import_react16 = __toESM(require_react(), 1); +var TagName7 = "div"; +function getMouseDestination(event) { + const relatedTarget = event.relatedTarget; + if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { + return relatedTarget; + } + return null; +} +function hoveringInside(event) { + const nextElement = getMouseDestination(event); + if (!nextElement) return false; + return contains(event.currentTarget, nextElement); +} +var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); +function movingToAnotherItem(event) { + let dest = getMouseDestination(event); + if (!dest) return false; + do { + if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; + dest = dest.parentElement; + } while (dest); + return false; +} +var useCompositeHover = createHook( + function useCompositeHover2(_a) { + var _b = _a, { + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover + } = _b, props = __objRest(_b, [ + "store", + "focusOnHover", + "blurOnHoverEnd" + ]); + const context = useCompositeContext(); + store = store || context; + invariant( + store, + "CompositeHover must be wrapped in a Composite component." + ); + const isMouseMoving = useIsMouseMoving(); + const onMouseMoveProp = props.onMouseMove; + const focusOnHoverProp = useBooleanEvent(focusOnHover); + const onMouseMove = useEvent((event) => { + onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (!focusOnHoverProp(event)) return; + if (!hasFocusWithin(event.currentTarget)) { + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (baseElement && !hasFocus(baseElement)) { + baseElement.focus(); + } + } + store == null ? void 0 : store.setActiveId(event.currentTarget.id); + }); + const onMouseLeaveProp = props.onMouseLeave; + const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); + const onMouseLeave = useEvent((event) => { + var _a2; + onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (hoveringInside(event)) return; + if (movingToAnotherItem(event)) return; + if (!focusOnHoverProp(event)) return; + if (!blurOnHoverEndProp(event)) return; + store == null ? void 0 : store.setActiveId(null); + (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }); + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName7, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js +var import_react17 = __toESM(require_react(), 1); +var TagName8 = "div"; +var useCollectionItem = createHook( + function useCollectionItem2(_a) { + var _b = _a, { + store, + shouldRegisterItem = true, + getItem = identity, + element + } = _b, props = __objRest(_b, [ + "store", + "shouldRegisterItem", + "getItem", + // @ts-expect-error This prop may come from a collection renderer. + "element" + ]); + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react17.useRef)(element); + (0, import_react17.useEffect)(() => { + const element2 = ref.current; + if (!id) return; + if (!element2) return; + if (!shouldRegisterItem) return; + const item = getItem({ id, element: element2 }); + return store == null ? void 0 : store.renderItem(item); + }, [id, shouldRegisterItem, getItem, store]); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref) + }); + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName8, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +var TagName9 = "button"; +function isEditableElement(element) { + if (isTextbox(element)) return true; + return element.tagName === "INPUT" && !isButton(element); +} +function getNextPageOffset(scrollingElement, pageUp = false) { + const height = scrollingElement.clientHeight; + const { top } = scrollingElement.getBoundingClientRect(); + const pageSize = Math.max(height * 0.875, height - 40) * 1.5; + const pageOffset = pageUp ? height - pageSize + top : pageSize + top; + if (scrollingElement.tagName === "HTML") { + return pageOffset + scrollingElement.scrollTop; + } + return pageOffset; +} +function getItemOffset(itemElement, pageUp = false) { + const { top } = itemElement.getBoundingClientRect(); + if (pageUp) { + return top + itemElement.clientHeight; + } + return top; +} +function findNextPageItemId(element, store, next, pageUp = false) { + var _a; + if (!store) return; + if (!next) return; + const { renderedItems } = store.getState(); + const scrollingElement = getScrollingElement(element); + if (!scrollingElement) return; + const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); + let id; + let prevDifference; + for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { + const previousId = id; + id = next(i2); + if (!id) break; + if (id === previousId) continue; + const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; + if (!itemElement) continue; + const itemOffset = getItemOffset(itemElement, pageUp); + const difference = itemOffset - nextPageOffset; + const absDifference = Math.abs(difference); + if (pageUp && difference <= 0 || !pageUp && difference >= 0) { + if (prevDifference !== void 0 && prevDifference < absDifference) { + id = previousId; + } + break; + } + prevDifference = absDifference; + } + return id; +} +function targetIsAnotherItem(event, store) { + if (isSelfTarget(event)) return false; + return isItem(store, event.target); +} +var useCompositeItem = createHook( + function useCompositeItem2(_a) { + var _b = _a, { + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp + } = _b, props = __objRest(_b, [ + "store", + "rowId", + "preventScrollOnKeyDown", + "moveOnKeyPress", + "tabbable", + "getItem", + "aria-setsize", + "aria-posinset" + ]); + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react18.useRef)(null); + const row = (0, import_react18.useContext)(CompositeRowContext); + const disabled = disabledFromProps(props); + const trulyDisabled = disabled && !props.accessibleWhenDisabled; + const { + rowId, + baseElement, + isActiveItem, + ariaSetSize, + ariaPosInSet, + isTabbable + } = useStoreStateObject(store, { + rowId(state) { + if (rowIdProp) return rowIdProp; + if (!state) return; + if (!(row == null ? void 0 : row.baseElement)) return; + if (row.baseElement !== state.baseElement) return; + return row.id; + }, + baseElement(state) { + return (state == null ? void 0 : state.baseElement) || void 0; + }, + isActiveItem(state) { + return !!state && state.activeId === id; + }, + ariaSetSize(state) { + if (ariaSetSizeProp != null) return ariaSetSizeProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaSetSize)) return; + if (row.baseElement !== state.baseElement) return; + return row.ariaSetSize; + }, + ariaPosInSet(state) { + if (ariaPosInSetProp != null) return ariaPosInSetProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaPosInSet)) return; + if (row.baseElement !== state.baseElement) return; + const itemsInRow = state.renderedItems.filter( + (item) => item.rowId === rowId + ); + return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); + }, + isTabbable(state) { + if (!(state == null ? void 0 : state.renderedItems.length)) return true; + if (state.virtualFocus) return false; + if (tabbable) return true; + if (state.activeId === null) return false; + const item = store == null ? void 0 : store.item(state.activeId); + if (item == null ? void 0 : item.disabled) return true; + if (!(item == null ? void 0 : item.element)) return true; + return state.activeId === id; + } + }); + const getItem = (0, import_react18.useCallback)( + (item) => { + var _a2; + const nextItem = __spreadProps(__spreadValues({}, item), { + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a2 = item.element) == null ? void 0 : _a2.textContent + }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react18.useRef)(false); + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (isPortalEvent(event)) return; + if (!id) return; + if (!store) return; + if (targetIsAnotherItem(event, store)) return; + const { virtualFocus, baseElement: baseElement2 } = store.getState(); + store.setActiveId(id); + if (isTextbox(event.currentTarget)) { + selectTextField(event.currentTarget); + } + if (!virtualFocus) return; + if (!isSelfTarget(event)) return; + if (isEditableElement(event.currentTarget)) return; + if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; + if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { + event.currentTarget.scrollIntoView({ + block: "nearest", + inline: "nearest" + }); + } + hasFocusedComposite.current = true; + const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); + if (fromComposite) { + focusSilently(baseElement2); + } else { + baseElement2.focus(); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + const state = store == null ? void 0 : store.getState(); + if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { + hasFocusedComposite.current = false; + event.preventDefault(); + event.stopPropagation(); + } + }); + const onKeyDownProp = props.onKeyDown; + const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!isSelfTarget(event)) return; + if (!store) return; + const { currentTarget } = event; + const state = store.getState(); + const item = store.item(id); + const isGrid2 = !!(item == null ? void 0 : item.rowId); + const isVertical = state.orientation !== "horizontal"; + const isHorizontal = state.orientation !== "vertical"; + const canHomeEnd = () => { + if (isGrid2) return true; + if (isHorizontal) return true; + if (!state.baseElement) return true; + if (!isTextField(state.baseElement)) return true; + return false; + }; + const keyMap = { + ArrowUp: (isGrid2 || isVertical) && store.up, + ArrowRight: (isGrid2 || isHorizontal) && store.next, + ArrowDown: (isGrid2 || isVertical) && store.down, + ArrowLeft: (isGrid2 || isHorizontal) && store.previous, + Home: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.first(); + } + return store == null ? void 0 : store.previous(-1); + }, + End: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.last(); + } + return store == null ? void 0 : store.next(-1); + }, + PageUp: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); + }, + PageDown: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); + } + }; + const action = keyMap[event.key]; + if (action) { + if (isTextbox(currentTarget)) { + const selection = getTextboxSelection(currentTarget); + const isLeft = isHorizontal && event.key === "ArrowLeft"; + const isRight = isHorizontal && event.key === "ArrowRight"; + const isUp = isVertical && event.key === "ArrowUp"; + const isDown = isVertical && event.key === "ArrowDown"; + if (isRight || isDown) { + const { length: valueLength } = getTextboxValue(currentTarget); + if (selection.end !== valueLength) return; + } else if ((isLeft || isUp) && selection.start !== 0) return; + } + const nextId = action(); + if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(nextId); + } + } + }); + const providerValue = (0, import_react18.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = __spreadProps(__spreadValues({ + id, + "data-active-item": isActiveItem || void 0 + }, props), { + ref: useMergeRefs(ref, props.ref), + tabIndex: isTabbable ? props.tabIndex : -1, + onFocus, + onBlurCapture, + onKeyDown + }); + props = useCommand(props); + props = useCollectionItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + })); + return removeUndefinedValues(__spreadProps(__spreadValues({}, props), { + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + })); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName9, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName10 = "div"; +function isSelected(storeValue, itemValue) { + if (itemValue == null) return; + if (storeValue == null) return false; + if (Array.isArray(storeValue)) { + return storeValue.includes(itemValue); + } + return storeValue === itemValue; +} +function getItemRole(popupRole) { + var _a; + const itemRoleByPopupRole = { + menu: "menuitem", + listbox: "option", + tree: "treeitem" + }; + const key = popupRole; + return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; +} +var useComboboxItem = createHook( + function useComboboxItem2(_a) { + var _b = _a, { + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp + } = _b, props = __objRest(_b, [ + "store", + "value", + "hideOnClick", + "setValueOnClick", + "selectValueOnClick", + "resetValueOnSelect", + "focusOnHover", + "moveOnKeyPress", + "getItem" + ]); + var _a2; + const context = useComboboxScopedContext(); + store = store || context; + invariant( + store, + "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." + ); + const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, { + resetValueOnSelectState: "resetValueOnSelect", + multiSelectable(state) { + return Array.isArray(state.selectedValue); + }, + selected(state) { + return isSelected(state.selectedValue, value); + } + }); + const getItem = (0, import_react19.useCallback)( + (item) => { + const nextItem = __spreadProps(__spreadValues({}, item), { value }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [value, getItemProp] + ); + setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; + hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; + const onClickProp = props.onClick; + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); + const resetValueOnSelectProp = useBooleanEvent( + (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable + ); + const hideOnClickProp = useBooleanEvent(hideOnClick); + const onClick = useEvent((event) => { + onClickProp == null ? void 0 : onClickProp(event); + if (event.defaultPrevented) return; + if (isDownloading(event)) return; + if (isOpeningInNewTab(event)) return; + if (value != null) { + if (selectValueOnClickProp(event)) { + if (resetValueOnSelectProp(event)) { + store == null ? void 0 : store.resetValue(); + } + store == null ? void 0 : store.setSelectedValue((prevValue) => { + if (!Array.isArray(prevValue)) return value; + if (prevValue.includes(value)) { + return prevValue.filter((v2) => v2 !== value); + } + return [...prevValue, value]; + }); + } + if (setValueOnClickProp(event)) { + store == null ? void 0 : store.setValue(value); + } + } + if (hideOnClickProp(event)) { + store == null ? void 0 : store.hide(); + } + }); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (!baseElement) return; + if (hasFocus(baseElement)) return; + const printable = event.key.length === 1; + if (printable || event.key === "Backspace" || event.key === "Delete") { + queueMicrotask(() => baseElement.focus()); + if (isTextField(baseElement)) { + store == null ? void 0 : store.setValue(baseElement.value); + } + } + }); + if (multiSelectable && selected != null) { + props = __spreadValues({ + "aria-selected": selected + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react19.useContext)(ComboboxListRoleContext); + props = __spreadProps(__spreadValues({ + role: getItemRole(popupRole), + children: value + }, props), { + onClick, + onKeyDown + }); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + // Dispatch a custom event on the combobox input when moving to an item + // with the keyboard so the Combobox component can enable inline + // autocompletion. + moveOnKeyPress: (event) => { + if (!moveOnKeyPressProp(event)) return false; + const moveEvent = new Event("combobox-item-move"); + const baseElement = store == null ? void 0 : store.getState().baseElement; + baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); + return true; + } + })); + props = useCompositeHover(__spreadValues({ store, focusOnHover }, props)); + return props; + } +); +var ComboboxItem = memo22( + forwardRef22(function ComboboxItem2(props) { + const htmlProps = useComboboxItem(props); + return createElement3(TagName10, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName11 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const comboboxId = store.useState((state) => { + var _a2; + return (_a2 = state.baseElement) == null ? void 0 : _a2.id; + }); + props = __spreadValues({ + htmlFor: comboboxId + }, props); + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName11, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js +var import_react20 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName12 = "div"; +function afterTimeout(timeoutMs, cb) { + const timeoutId = setTimeout(cb, timeoutMs); + return () => clearTimeout(timeoutId); +} +function afterPaint2(cb) { + let raf = requestAnimationFrame(() => { + raf = requestAnimationFrame(cb); + }); + return () => cancelAnimationFrame(raf); +} +function parseCSSTime(...times) { + return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { + const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; + const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; + if (currentTime > longestTime) return currentTime; + return longestTime; + }, 0); +} +function isHidden(mounted, hidden, alwaysVisible) { + return !alwaysVisible && hidden !== false && (!mounted || !!hidden); +} +var useDisclosureContent = createHook(function useDisclosureContent2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const context = useDisclosureProviderContext(); + store = store || context; + invariant( + store, + "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." + ); + const ref = (0, import_react20.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react20.useState)(null); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const animated = store.useState("animated"); + const contentElement = store.useState("contentElement"); + const otherElement = useStoreState(store.disclosure, "contentElement"); + useSafeLayoutEffect(() => { + if (!ref.current) return; + store == null ? void 0 : store.setContentElement(ref.current); + }, [store]); + useSafeLayoutEffect(() => { + let previousAnimated; + store == null ? void 0 : store.setState("animated", (animated2) => { + previousAnimated = animated2; + return true; + }); + return () => { + if (previousAnimated === void 0) return; + store == null ? void 0 : store.setState("animated", previousAnimated); + }; + }, [store]); + useSafeLayoutEffect(() => { + if (!animated) return; + if (!(contentElement == null ? void 0 : contentElement.isConnected)) { + setTransition(null); + return; + } + return afterPaint2(() => { + setTransition(open ? "enter" : mounted ? "leave" : null); + }); + }, [animated, contentElement, open, mounted]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!animated) return; + if (!transition) return; + if (!contentElement) return; + const stopAnimation = () => store == null ? void 0 : store.setState("animating", false); + const stopAnimationSync = () => (0, import_react_dom.flushSync)(stopAnimation); + if (transition === "leave" && open) return; + if (transition === "enter" && !open) return; + if (typeof animated === "number") { + const timeout2 = animated; + return afterTimeout(timeout2, stopAnimationSync); + } + const { + transitionDuration, + animationDuration, + transitionDelay, + animationDelay + } = getComputedStyle(contentElement); + const { + transitionDuration: transitionDuration2 = "0", + animationDuration: animationDuration2 = "0", + transitionDelay: transitionDelay2 = "0", + animationDelay: animationDelay2 = "0" + } = otherElement ? getComputedStyle(otherElement) : {}; + const delay = parseCSSTime( + transitionDelay, + animationDelay, + transitionDelay2, + animationDelay2 + ); + const duration = parseCSSTime( + transitionDuration, + animationDuration, + transitionDuration2, + animationDuration2 + ); + const timeout = delay + duration; + if (!timeout) { + if (transition === "enter") { + store.setState("animated", false); + } + stopAnimation(); + return; + } + const frameRate = 1e3 / 60; + const maxTimeout = Math.max(timeout - frameRate, 0); + return afterTimeout(maxTimeout, stopAnimationSync); + }, [store, animated, contentElement, otherElement, open, transition]); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react20.useMemo)(() => { + if (hidden) { + return __spreadProps(__spreadValues({}, styleProp), { display: "none" }); + } + return styleProp; + }, [hidden, styleProp]); + props = __spreadProps(__spreadValues({ + id, + "data-open": open || void 0, + "data-enter": transition === "enter" || void 0, + "data-leave": transition === "leave" || void 0, + hidden + }, props), { + ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), + style + }); + return removeUndefinedValues(props); +}); +var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { + const htmlProps = useDisclosureContent(props); + return createElement3(TagName12, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2(_a) { + var _b = _a, { + unmountOnHide + } = _b, props = __objRest(_b, [ + "unmountOnHide" + ]); + const context = useDisclosureProviderContext(); + const store = props.store || context; + const mounted = useStoreState( + store, + (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) + ); + if (mounted === false) return null; + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DisclosureContentImpl, __spreadValues({}, props)); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js +var import_react21 = __toESM(require_react(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const scopedContext = useComboboxScopedContext(true); + const context = useComboboxContext(); + store = store || context; + const scopedContextSameStore = !!store && store === scopedContext; + invariant( + store, + "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react21.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: "none" }) : props.style; + const multiSelectable = store.useState( + (state) => Array.isArray(state.selectedValue) + ); + const role = useAttribute(ref, "role", props.role); + const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; + const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; + const [hasListboxInside, setHasListboxInside] = (0, import_react21.useState)(false); + const contentElement = store.useState("contentElement"); + useSafeLayoutEffect(() => { + if (!mounted) return; + const element = ref.current; + if (!element) return; + if (contentElement !== element) return; + const callback = () => { + setHasListboxInside(!!element.querySelector("[role='listbox']")); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { + subtree: true, + childList: true, + attributeFilter: ["role"] + }); + callback(); + return () => observer.disconnect(); + }, [mounted, contentElement]); + if (!hasListboxInside) { + props = __spreadValues({ + role: "listbox", + "aria-multiselectable": ariaMultiSelectable + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = __spreadProps(__spreadValues({ + id, + hidden + }, props), { + ref: useMergeRefs(setContentElement, ref, props.ref), + style + }); + return removeUndefinedValues(props); + } +); +var ComboboxList = forwardRef22(function ComboboxList2(props) { + const htmlProps = useComboboxList(props); + return createElement3(TagName13, htmlProps); +}); + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_remove_accents = __toESM(require_remove_accents(), 1); +var import_compose8 = __toESM(require_compose(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); +var import_element24 = __toESM(require_element(), 1); +var import_components19 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/utils.mjs +var EMPTY_ARRAY3 = []; +var getCurrentValue = (filterDefinition, currentFilter) => { + if (filterDefinition.singleSelection) { + return currentFilter?.value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value; + } + if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { + return [currentFilter.value]; + } + return EMPTY_ARRAY3; +}; + +// packages/dataviews/build-module/hooks/use-elements.mjs +var import_element23 = __toESM(require_element(), 1); +var EMPTY_ARRAY4 = []; +function useElements({ + elements, + getElements +}) { + const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4; + const [records, setRecords] = (0, import_element23.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element23.useState)(false); + (0, import_element23.useEffect)(() => { + if (!getElements) { + setRecords(staticElements); + return; + } + let cancelled = false; + setIsLoading(true); + getElements().then((fetchedElements) => { + if (!cancelled) { + const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; + setRecords(dynamicElements); + } + }).catch(() => { + if (!cancelled) { + setRecords(staticElements); + } + }).finally(() => { + if (!cancelled) { + setIsLoading(false); + } + }); + return () => { + cancelled = true; + }; + }, [getElements, staticElements]); + return { + elements: records, + isLoading + }; +} + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +function normalizeSearchInput(input = "") { + return (0, import_remove_accents.default)(input.trim().toLowerCase()); +} +var getNewValue = (filterDefinition, currentFilter, value) => { + if (filterDefinition.singleSelection) { + return value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; + } + return [value]; +}; +function generateFilterElementCompositeItemId(prefix, filterElementValue) { + return `${prefix}-${filterElementValue}`; +} +var MultiSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-multi-selection", + { "is-selected": selected } + ), + children: selected && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Icon, { icon: check_default }) + } + ); +}; +var SingleSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-single-selection", + { "is-selected": selected } + ) + } + ); +}; +function ListBox({ view, filter, onChangeView }) { + const baseId = (0, import_compose8.useInstanceId)(ListBox, "dataviews-filter-list-box"); + const [activeCompositeId, setActiveCompositeId] = (0, import_element24.useState)( + // When there are one or less operators, the first item is set as active + // (by setting the initial `activeId` to `undefined`). + // With 2 or more operators, the focus is moved on the operators control + // (by setting the initial `activeId` to `null`), meaning that there won't + // be an active item initially. Focus is then managed via the + // `onFocusVisible` callback. + filter.operators?.length === 1 ? void 0 : null + ); + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + import_components19.Composite, + { + virtualFocus: true, + focusLoop: true, + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + role: "listbox", + className: "dataviews-filters__search-widget-listbox", + "aria-label": (0, import_i18n22.sprintf)( + /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ + (0, import_i18n22.__)("List of: %1$s"), + filter.name + ), + onFocusVisible: () => { + if (!activeCompositeId && filter.elements.length) { + setActiveCompositeId( + generateFilterElementCompositeItemId( + baseId, + filter.elements[0].value + ) + ); + } + }, + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Composite.Typeahead, {}), + children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + import_components19.Composite.Hover, + { + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + import_components19.Composite.Item, + { + id: generateFilterElementCompositeItemId( + baseId, + element.value + ), + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "div", + { + "aria-label": element.label, + role: "option", + className: "dataviews-filters__search-widget-listitem" + } + ), + onClick: () => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + } + } + ), + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes(element.value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: element.label }) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element24.useState)(""); + const deferredSearchValue = (0, import_element24.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element24.useMemo)(() => { + const normalizedSearch = normalizeSearchInput(deferredSearchValue); + return filter.elements.filter( + (item) => normalizeSearchInput(item.label).includes(normalizedSearch) + ); + }, [filter.elements, deferredSearchValue]); + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxProvider, + { + selectedValue: currentValue, + setSelectedValue: (value) => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map((_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value + }; + } + return _filter; + }) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + setValue: setSearchValue, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ComboboxLabel, + { + render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.VisuallyHidden, { children: (0, import_i18n22.__)("Search items") }), + children: (0, import_i18n22.__)("Search items") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + Combobox, + { + autoSelect: "always", + placeholder: (0, import_i18n22.__)("Search"), + className: "dataviews-filters__search-widget-filter-combobox__input" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Icon, { icon: search_default }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxList, + { + className: "dataviews-filters__search-widget-filter-combobox-list", + alwaysVisible: true, + children: [ + matches.map((element) => { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( + ComboboxItem, + { + resetValueOnSelect: false, + value: element.value, + className: "dataviews-filters__search-widget-listitem", + hideOnClick: false, + setValueOnClick: false, + focusOnHover: true, + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes( + element.value + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ComboboxItemValue, + { + className: "dataviews-filters__search-widget-filter-combobox-item-value", + value: element.label + } + ), + !!element.description && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) + ] }) + ] + }, + element.value + ); + }), + !matches.length && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { children: (0, import_i18n22.__)("No results found") }) + ] + } + ) + ] + } + ); +} +function SearchWidget(props) { + const { elements, isLoading } = useElements({ + elements: props.filter.elements, + getElements: props.filter.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components19.Spinner, {}) }); + } + if (elements.length === 0) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n22.__)("No elements found") }); + } + const Widget = elements.length > 10 ? ComboboxList22 : ListBox; + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Widget, { ...props, filter: { ...props.filter, elements } }); +} + +// packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs +var import_es6 = __toESM(require_es6(), 1); +var import_compose9 = __toESM(require_compose(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_components20 = __toESM(require_components(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +function InputWidget({ + filter, + view, + onChangeView, + fields +}) { + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const field = (0, import_element25.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Deactivate validation for filters. + isValid: {}, + // Configure getValue/setValue as if Item was a plain object. + getValue: ({ item }) => item[currentField.id], + setValue: ({ value }) => ({ + [currentField.id]: value + }) + }; + } + return currentField; + }, [fields, filter.field]); + const data = (0, import_element25.useMemo)(() => { + return (view.filters ?? []).reduce( + (acc, activeFilter) => { + acc[activeFilter.field] = activeFilter.value; + return acc; + }, + {} + ); + }, [view.filters]); + const handleChange = (0, import_compose9.useEvent)((updatedData) => { + if (!field || !currentFilter) { + return; + } + const nextValue = field.getValue({ item: updatedData }); + if ((0, import_es6.default)(nextValue, currentValue)) { + return; + } + onChangeView({ + ...view, + filters: (view.filters ?? []).map( + (_filter) => _filter.field === filter.field ? { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + // Consider empty strings as undefined: + // + // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records + // - empty string as value means "search empty string": returns only the records that have an empty string as value + // + // In practice, this means the filter will not be able to find an empty string as the value. + value: nextValue === "" ? void 0 : nextValue + } : _filter + ) + }); + }); + if (!field || !field.Edit || !currentFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + import_components20.Flex, + { + className: "dataviews-filters__user-input-widget", + gap: 2.5, + direction: "column", + children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + field.Edit, + { + hideLabelFromVision: true, + data, + field, + operator: currentFilter.operator, + onChange: handleChange + } + ) + } + ); +} + +// packages/dataviews/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); + +// packages/dataviews/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} + +// packages/dataviews/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} + +// packages/dataviews/node_modules/date-fns/addDays.js +function addDays(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) return _date; + _date.setDate(_date.getDate() + amount); + return _date; +} + +// packages/dataviews/node_modules/date-fns/addMonths.js +function addMonths(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) { + return _date; + } + const dayOfMonth = _date.getDate(); + const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); + endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); + const daysInMonth = endOfDesiredMonth.getDate(); + if (dayOfMonth >= daysInMonth) { + return endOfDesiredMonth; + } else { + _date.setFullYear( + endOfDesiredMonth.getFullYear(), + endOfDesiredMonth.getMonth(), + dayOfMonth + ); + return _date; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} + +// packages/dataviews/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} + +// packages/dataviews/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} + +// packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} + +// packages/dataviews/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} + +// packages/dataviews/node_modules/date-fns/addWeeks.js +function addWeeks(date, amount, options) { + return addDays(date, amount * 7, options); +} + +// packages/dataviews/node_modules/date-fns/addYears.js +function addYears(date, amount, options) { + return addMonths(date, amount * 12, options); +} + +// packages/dataviews/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} + +// packages/dataviews/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} + +// packages/dataviews/node_modules/date-fns/startOfMonth.js +function startOfMonth(date, options) { + const _date = toDate(date, options?.in); + _date.setDate(1); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = (token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format6 = args.formats[width] || args.formats[args.defaultWidth]; + return format6; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = (dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}; +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: (quarter) => quarter - 1 + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: (value) => parseInt(value, 10) + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: (index) => index + 1 + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// packages/dataviews/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} + +// packages/dataviews/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} + +// packages/dataviews/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// packages/dataviews/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, + // Year + y: function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone quarter + q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, + // Month + M: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, + // Stand-alone month + L: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, + // Local week of year + w: function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Local day of week + e: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone local day of week + c: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, + // ISO day of week + i: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // AM or PM + a: function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // AM, PM, midnight, noon + b: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // Hour [1-12] + h: function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (GMT) + O: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (specific non-location) + z: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Seconds timestamp + t: function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + } +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}; +var timeLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}; +var dateTimeLongFormatter = (pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +function warnOrThrowProtectedError(token, format6, input) { + const _message = message(token, format6, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +function message(token, format6, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} + +// packages/dataviews/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} + +// packages/dataviews/node_modules/date-fns/subDays.js +function subDays(date, amount, options) { + return addDays(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subMonths.js +function subMonths(date, amount, options) { + return addMonths(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subWeeks.js +function subWeeks(date, amount, options) { + return addWeeks(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subYears.js +function subYears(date, amount, options) { + return addYears(date, -amount, options); +} + +// packages/dataviews/build-module/utils/operators.mjs +var import_i18n23 = __toESM(require_i18n(), 1); +var import_element26 = __toESM(require_element(), 1); +var import_date = __toESM(require_date(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var filterTextWrappers = { + Name: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), + Value: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) +}; +function getRelativeDate(value, unit) { + switch (unit) { + case "days": + return subDays(/* @__PURE__ */ new Date(), value); + case "weeks": + return subWeeks(/* @__PURE__ */ new Date(), value); + case "months": + return subMonths(/* @__PURE__ */ new Date(), value); + case "years": + return subYears(/* @__PURE__ */ new Date(), value); + default: + return /* @__PURE__ */ new Date(); + } +} +var isNoneOperatorDefinition = { + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is none of"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ + (0, import_i18n23.__)("%1$s is none of: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter: ((item, field, filterValue) => { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return !filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return !filterValue.includes(fieldValue); + } + return false; + }), + selection: "multi" +}; +var OPERATORS = [ + { + name: OPERATOR_IS_ANY, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return filterValue.includes(fieldValue); + } + return false; + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NONE, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_IS_ALL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes all"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes all: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + return filterValue.every((value) => { + return field.getValue({ item })?.includes(value); + }); + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NOT_ALL, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_BETWEEN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Between (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ + (0, import_i18n23.__)( + "%1$s between (inc): %2$s and %3$s" + ), + filter.name, + activeElements[0].label[0], + activeElements[0].label[1] + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { + return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; + } + return false; + }, + selection: "custom" + }, + { + name: OPERATOR_IN_THE_PAST, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("In the past"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ + (0, import_i18n23.__)( + "%1$s is in the past: %2$s" + ), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); + }, + selection: "custom" + }, + { + name: OPERATOR_OVER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Over"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ + (0, import_i18n23.__)("%1$s is over: %2$s"), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue < targetDate; + }, + selection: "custom" + }, + { + name: OPERATOR_IS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue === field.getValue({ item }) || filterValue === void 0; + }, + selection: "single" + }, + { + name: OPERATOR_IS_NOT, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is not"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue !== field.getValue({ item }); + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ + (0, import_i18n23.__)("%1$s is less than: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue < filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue > filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is less than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue <= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue >= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is before: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate < filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is after: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate > filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or before: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate <= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or after: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate >= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Contains"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ + (0, import_i18n23.__)("%1$s contains: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Doesn't contain"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ + (0, import_i18n23.__)( + "%1$s doesn't contain: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_STARTS_WITH, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Starts with"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ + (0, import_i18n23.__)("%1$s starts with: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("On"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() === fieldDate.getTime(); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Not on"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() !== fieldDate.getTime(); + }, + selection: "single" + } +]; +var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name); +var getAllOperatorNames = () => OPERATORS.map((op) => op.name); +var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some( + (op) => op.name === name +); +var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var ENTER = "Enter"; +var SPACE = " "; +var FilterText = ({ + activeElements, + filterInView, + filter +}) => { + if (activeElements === void 0 || activeElements.length === 0) { + return filter.name; + } + const operator = getOperatorByName(filterInView?.operator); + if (operator !== void 0) { + return operator.filterText(filter, activeElements); + } + return (0, import_i18n24.sprintf)( + /* translators: 1: Filter name e.g.: "Unknown status for Author". */ + (0, import_i18n24.__)("Unknown status for %1$s"), + filter.name + ); +}; +function OperatorSelector({ + filter, + view, + onChangeView +}) { + const operatorOptions = filter.operators?.map((operator) => ({ + value: operator, + label: getOperatorByName(operator)?.label || operator + })); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const value = currentFilter?.operator || filter.operators[0]; + return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "flex-start", + className: "dataviews-filters__summary-operators-container", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components21.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.SelectControl, + { + className: "dataviews-filters__summary-operators-filter-select", + label: (0, import_i18n24.__)("Conditions"), + value, + options: operatorOptions, + onChange: (newValue) => { + const newOperator = newValue; + const currentOperator = currentFilter?.operator; + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + const currentOpSelectionModel = getOperatorByName( + currentOperator + )?.selection; + const newOpSelectionModel = getOperatorByName( + newOperator + )?.selection; + const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ + currentOpSelectionModel, + newOpSelectionModel + ].includes("custom"); + return { + ..._filter, + value: shouldResetValue ? void 0 : _filter.value, + operator: newOperator + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: newOperator, + value: void 0 + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + size: "small", + variant: "minimal", + hideLabelFromVision: true + } + ) + ] + } + ); +} +function Filter({ + addFilterRef, + openedFilter, + fields, + ...commonProps +}) { + const toggleRef = (0, import_element27.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element27.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Configure getValue as if Item was a plain object. + // See related input-widget.tsx + getValue: ({ item }) => item[currentField.id] + }; + } + return currentField; + }, [fields, filter.field]); + const { elements } = useElements({ + elements: filter.elements, + getElements: filter.getElements + }); + if (elements.length > 0) { + activeElements = elements.filter((element) => { + if (filter.singleSelection) { + return element.value === filterInView?.value; + } + return filterInView?.value?.includes(element.value); + }); + } else if (Array.isArray(filterInView?.value)) { + const label = filterInView.value.map((v2) => { + const formattedValue = field?.getValueFormatted({ + item: { [field.id]: v2 }, + field + }); + return formattedValue || String(v2); + }); + activeElements = [ + { + value: filterInView.value, + // @ts-ignore + label + } + ]; + } else if (typeof filterInView?.value === "object") { + activeElements = [ + { value: filterInView.value, label: filterInView.value } + ]; + } else if (filterInView?.value !== void 0) { + const label = field !== void 0 ? field.getValueFormatted({ + item: { [field.id]: filterInView.value }, + field + }) : String(filterInView.value); + activeElements = [ + { + value: filterInView.value, + label + } + ]; + } + const isPrimary = filter.isPrimary; + const isLocked = filterInView?.isLocked; + const hasValues = !isLocked && filterInView?.value !== void 0; + const canResetOrRemove = !isLocked && (!isPrimary || hasValues); + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Dropdown, + { + defaultOpen: openedFilter === filter.field, + contentClassName: "dataviews-filters__summary-popover", + popoverProps: { placement: "bottom-start", role: "dialog" }, + onClose: () => { + toggleRef.current?.focus(); + }, + renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Tooltip, + { + text: (0, import_i18n24.sprintf)( + /* translators: 1: Filter name. */ + (0, import_i18n24.__)("Filter by: %1$s"), + filter.name.toLowerCase() + ), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + "div", + { + className: clsx_default( + "dataviews-filters__summary-chip", + { + "has-reset": canResetOrRemove, + "has-values": hasValues, + "is-not-clickable": isLocked + } + ), + role: "button", + tabIndex: isLocked ? -1 : 0, + onClick: () => { + if (!isLocked) { + onToggle(); + } + }, + onKeyDown: (event) => { + if (!isLocked && [ENTER, SPACE].includes(event.key)) { + onToggle(); + event.preventDefault(); + } + }, + "aria-disabled": isLocked, + "aria-pressed": isOpen, + "aria-expanded": isOpen, + ref: toggleRef, + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + FilterText, + { + activeElements, + filterInView, + filter + } + ) + } + ) + } + ), + canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + import_components21.Tooltip, + { + text: isPrimary ? (0, import_i18n24.__)("Reset") : (0, import_i18n24.__)("Remove"), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + "button", + { + className: clsx_default( + "dataviews-filters__summary-chip-remove", + { "has-values": hasValues } + ), + onClick: () => { + onChangeView({ + ...view, + page: 1, + filters: view.filters?.filter( + (_filter) => _filter.field !== filter.field + ) + }); + if (!isPrimary) { + addFilterRef.current?.focus(); + } else { + toggleRef.current?.focus(); + } + }, + children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components21.Icon, { icon: close_small_default }) + } + ) + } + ) + ] }), + renderContent: () => { + return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(OperatorSelector, { ...commonProps }), + commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + SearchWidget, + { + ...commonProps, + filter: { + ...commonProps.filter, + elements + } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(InputWidget, { ...commonProps, fields }) + ] }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs +var import_components22 = __toESM(require_components(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); +var import_element28 = __toESM(require_element(), 1); +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock(import_components22.privateApis); +function AddFilterMenu({ + filters, + view, + onChangeView, + setOpenedFilter, + triggerProps +}) { + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Menu4, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.TriggerButton, { ...triggerProps }), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.Popover, { children: inactiveFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Menu4.Item, + { + onClick: () => { + setOpenedFilter(filter.field); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: filter.field, + value: void 0, + operator: filter.operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Menu4.ItemLabel, { children: filter.name }) + }, + filter.field + ); + }) }) + ] }); +} +function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { + if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { + return null; + } + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + AddFilterMenu, + { + triggerProps: { + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components22.Button, + { + accessibleWhenDisabled: true, + size: "compact", + className: "dataviews-filters-button", + variant: "tertiary", + disabled: !inactiveFilters.length, + ref + } + ), + children: (0, import_i18n25.__)("Add filter") + }, + ...{ filters, view, onChangeView, setOpenedFilter } + } + ); +} +var add_filter_default = (0, import_element28.forwardRef)(AddFilter); + +// packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs +var import_components23 = __toESM(require_components(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +function ResetFilter({ + filters, + view, + onChangeView +}) { + const isPrimary = (field) => filters.some( + (_filter) => _filter.field === field && _filter.isPrimary + ); + const isDisabled = !view.search && !view.filters?.some( + (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) + ); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components23.Button, + { + disabled: isDisabled, + accessibleWhenDisabled: true, + size: "compact", + variant: "tertiary", + className: "dataviews-filters__reset-button", + onClick: () => { + onChangeView({ + ...view, + page: 1, + search: "", + filters: view.filters?.filter((f2) => !!f2.isLocked) || [] + }); + }, + children: (0, import_i18n26.__)("Reset") + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs +var import_element29 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element29.useMemo)(() => { + const filters = []; + fields.forEach((field) => { + if (field.filterBy === false || !field.hasElements && !field.Edit) { + return; + } + const operators = field.filterBy.operators; + const isPrimary = !!field.filterBy?.isPrimary; + const isLocked = view.filters?.some( + (f2) => f2.field === field.id && !!f2.isLocked + ) ?? false; + filters.push({ + field: field.id, + name: field.label, + elements: field.elements, + getElements: field.getElements, + hasElements: field.hasElements, + singleSelection: operators.some( + (op) => isSingleSelectionOperator(op) + ), + operators, + isVisible: isLocked || isPrimary || !!view.filters?.some( + (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) + ), + isPrimary, + isLocked + }); + }); + filters.sort((a2, b2) => { + if (a2.isLocked && !b2.isLocked) { + return -1; + } + if (!a2.isLocked && b2.isLocked) { + return 1; + } + if (a2.isPrimary && !b2.isPrimary) { + return -1; + } + if (!a2.isPrimary && b2.isPrimary) { + return 1; + } + return a2.name.localeCompare(b2.name); + }); + return filters; + }, [fields, view]); +} +var use_filters_default = useFilters; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +function Filters({ className }) { + const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element30.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element30.useRef)(null); + const filters = use_filters_default(fields, view); + const addFilter = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + add_filter_default, + { + filters, + view, + onChangeView, + ref: addFilterRef, + setOpenedFilter + }, + "add-filter" + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + if (visibleFilters.length === 0) { + return null; + } + const filterComponents = [ + ...visibleFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + Filter, + { + filter, + view, + fields, + onChangeView, + addFilterRef, + openedFilter + }, + filter.field + ); + }), + addFilter + ]; + filterComponents.push( + /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + ResetFilter, + { + filters, + view, + onChangeView + }, + "reset-filters" + ) + ); + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + gap: "sm", + style: { width: "fit-content" }, + wrap: "wrap", + className, + children: filterComponents + } + ); +} +var filters_default = (0, import_element30.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element31 = __toESM(require_element(), 1); +var import_components24 = __toESM(require_components(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); +function FiltersToggle() { + const { + filters, + view, + onChangeView, + setOpenedFilter, + isShowingFilter, + setIsShowingFilter + } = (0, import_element31.useContext)(dataviews_context_default); + const buttonRef = (0, import_element31.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element31.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + const hasVisibleFilters = !!visibleFilters.length; + if (filters.length === 0) { + return null; + } + const addFilterButtonProps = { + label: (0, import_i18n27.__)("Add filter"), + "aria-expanded": false, + isPressed: false + }; + const toggleFiltersButtonProps = { + label: (0, import_i18n27._x)("Filter", "verb"), + "aria-expanded": isShowingFilter, + isPressed: isShowingFilter, + onClick: () => { + if (!isShowingFilter) { + setOpenedFilter(null); + } + setIsShowingFilter(!isShowingFilter); + } + }; + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + AddFilterMenu, + { + filters, + view, + onChangeView: onChangeViewWithFilterVisibility, + setOpenedFilter, + triggerProps: { render: buttonComponent } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + FilterVisibilityToggle, + { + buttonRef, + filtersCount: view.filters?.length, + children: buttonComponent + } + ) }); +} +function FilterVisibilityToggle({ + buttonRef, + filtersCount, + children +}) { + (0, import_element31.useEffect)( + () => () => { + buttonRef.current?.focus(); + }, + [buttonRef] + ); + return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ + children, + !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) + ] }); +} +var toggle_default = FiltersToggle; + +// packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs +var import_element32 = __toESM(require_element(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element32.useContext)(dataviews_context_default); + if (!isShowingFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(filters_default, { ...props }); +} +var filters_toggled_default = FiltersToggled; + +// packages/dataviews/build-module/components/dataviews-layout/index.mjs +var import_element33 = __toESM(require_element(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + isLoading, + view, + onChangeView, + selection, + onChangeSelection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + defaultLayouts, + empty = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: (0, import_i18n28.__)("No results") }) + } = (0, import_element33.useContext)(dataviews_context_default); + const ViewComponent = VIEW_LAYOUTS.find( + (v2) => v2.type === view.type && defaultLayouts[v2.type] + )?.component; + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + ViewComponent, + { + className, + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + isLoading, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + renderItemLink, + isItemClickable, + view, + empty + } + ); +} + +// packages/dataviews/build-module/components/dataviews-footer/index.mjs +var import_element34 = __toESM(require_element(), 1); +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +var EMPTY_ARRAY5 = []; +function DataViewsFooter() { + const { + view, + paginationInfo: { totalItems = 0, totalPages }, + data, + actions = EMPTY_ARRAY5 + } = (0, import_element34.useContext)(dataviews_context_default); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) { + return null; + } + return !!totalItems && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: "dataviews-footer", + gap: "sm", + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(BulkActionsFooter, {}), + /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(dataviews_pagination_default, {}) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-search/index.mjs +var import_i18n29 = __toESM(require_i18n(), 1); +var import_element35 = __toESM(require_element(), 1); +var import_components25 = __toESM(require_components(), 1); +var import_compose10 = __toESM(require_compose(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +var DataViewsSearch = (0, import_element35.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element35.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element35.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element35.useRef)(onChangeView); + const viewRef = (0, import_element35.useRef)(view); + (0, import_element35.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element35.useEffect)(() => { + if (debouncedSearch !== viewRef.current?.search) { + onChangeViewRef.current({ + ...viewRef.current, + page: 1, + search: debouncedSearch + }); + } + }, [debouncedSearch]); + const searchLabel = label || (0, import_i18n29.__)("Search"); + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + import_components25.SearchControl, + { + className: "dataviews-search", + onChange: setSearch, + value: search, + label: searchLabel, + placeholder: searchLabel, + size: "compact" + } + ); +}); +var dataviews_search_default = DataViewsSearch; + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_components27 = __toESM(require_components(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_warning = __toESM(require_warning(), 1); +var import_compose11 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +var import_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element36.useContext)(dataviews_context_default); + const { view, onChangeView } = context; + const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; + if (!context.hasInfiniteScrollHandler) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components26.ToggleControl, + { + label: (0, import_i18n30.__)("Enable infinite scroll"), + help: (0, import_i18n30.__)( + "Automatically load more content as you scroll, instead of showing pagination links." + ), + checked: infiniteScrollEnabled, + onChange: (newValue) => { + onChangeView({ + ...view, + infiniteScrollEnabled: newValue + }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu5 } = unlock(import_components27.privateApis); +var DATAVIEWS_CONFIG_POPOVER_PROPS = { + className: "dataviews-config__popover", + placement: "bottom-end", + offset: 9 +}; +function ViewTypeMenu() { + const { view, onChangeView, defaultLayouts } = (0, import_element37.useContext)(dataviews_context_default); + const availableLayouts = Object.keys(defaultLayouts); + if (availableLayouts.length <= 1) { + return null; + } + const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Menu5, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Menu5.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + size: "compact", + icon: activeView?.icon, + label: (0, import_i18n31.__)("Layout") + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Menu5.Popover, { children: availableLayouts.map((layout) => { + const config = VIEW_LAYOUTS.find( + (v2) => v2.type === layout + ); + if (!config) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Menu5.RadioItem, + { + value: layout, + name: "view-actions-available-view", + checked: layout === view.type, + hideOnClick: true, + onChange: (e2) => { + switch (e2.target.value) { + case "list": + case "grid": + case "table": + case "pickerGrid": + case "pickerTable": + case "activity": + const viewWithoutLayout = { ...view }; + if ("layout" in viewWithoutLayout) { + delete viewWithoutLayout.layout; + } + return onChangeView({ + ...viewWithoutLayout, + type: e2.target.value, + ...defaultLayouts[e2.target.value] + }); + } + (0, import_warning.default)("Invalid dataview"); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Menu5.ItemLabel, { children: config.label }) + }, + layout + ); + }) }) + ] }); +} +function SortFieldControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const orderOptions = (0, import_element37.useMemo)(() => { + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + return sortableFields.map((field) => { + return { + label: field.label, + value: field.id + }; + }); + }, [fields]); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.SelectControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n31.__)("Sort by"), + value: view.sort?.field, + options: orderOptions, + onChange: (value) => { + onChangeView({ + ...view, + sort: { + direction: view?.sort?.direction || "desc", + field: value + }, + showLevels: false + }); + } + } + ); +} +function SortDirectionControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + if (sortableFields.length === 0) { + return null; + } + let value = view.sort?.direction; + if (!value && view.sort?.field) { + value = "desc"; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControl, + { + className: "dataviews-view-config__sort-direction", + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Order"), + value, + onChange: (newDirection) => { + if (newDirection === "asc" || newDirection === "desc") { + onChangeView({ + ...view, + sort: { + direction: newDirection, + field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. + fields.find( + (field) => field.enableSorting !== false + )?.id || "" + }, + showLevels: false + }); + return; + } + (0, import_warning.default)("Invalid direction"); + }, + children: SORTING_DIRECTIONS.map((direction) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControlOptionIcon, + { + value: direction, + icon: sortIcons[direction], + label: sortLabels[direction] + }, + direction + ); + }) + } + ); +} +function ItemsPerPageControl() { + const { view, config, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const { infiniteScrollEnabled } = view; + if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControl, + { + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Items per page"), + value: view.perPage || 10, + disabled: !view?.sort?.field, + onChange: (newItemsPerPage) => { + const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); + onChangeView({ + ...view, + perPage: newItemsPerPageNumber, + page: 1 + }); + }, + children: config.perPageSizes.map((value) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalToggleGroupControlOption, + { + value, + label: value.toString() + }, + value + ); + }) + } + ); +} +function SettingsSection({ + title, + description, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_components27.__experimentalGrid, { columns: 12, className: "dataviews-settings-section", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "dataviews-settings-section__sidebar", children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: title + } + ), + description && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalText, + { + variant: "muted", + className: "dataviews-settings-section__description", + children: description + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalGrid, + { + columns: 8, + gap: 4, + className: "dataviews-settings-section__content", + children + } + ) + ] }); +} +function DataviewsViewConfigDropdown() { + const { view } = (0, import_element37.useContext)(dataviews_context_default); + const popoverId = (0, import_compose11.useInstanceId)( + _DataViewsViewConfig, + "dataviews-view-config-dropdown" + ); + const activeLayout = VIEW_LAYOUTS.find( + (layout) => layout.type === view.type + ); + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Dropdown, + { + expandOnMobile: true, + popoverProps: { + ...DATAVIEWS_CONFIG_POPOVER_PROPS, + id: popoverId + }, + renderToggle: ({ onToggle, isOpen }) => { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + size: "compact", + icon: cog_default, + label: (0, import_i18n31._x)("View options", "View is used as a noun"), + onClick: onToggle, + "aria-expanded": isOpen ? "true" : "false", + "aria-controls": popoverId + } + ); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(SettingsSection, { title: (0, import_i18n31.__)("Appearance"), children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "is-divided-in-two", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SortFieldControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SortDirectionControl, {}) + ] + } + ), + !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(activeLayout.viewConfigOptions, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InfiniteScrollToggle, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ItemsPerPageControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PropertiesSection, {}) + ] }) + } + ) + } + ) + } + ); +} +function _DataViewsViewConfig() { + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ViewTypeMenu, {}), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DataviewsViewConfigDropdown, {}) + ] }); +} +var DataViewsViewConfig = (0, import_element37.memo)(_DataViewsViewConfig); +var dataviews_view_config_default = DataViewsViewConfig; + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_components28 = __toESM(require_components(), 1); +var import_element38 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs +function getCustomValidity(isValid2, validity) { + let customValidity; + if (isValid2?.required && validity?.required) { + customValidity = validity?.required?.message ? validity.required : void 0; + } else if (isValid2?.pattern && validity?.pattern) { + customValidity = validity.pattern; + } else if (isValid2?.min && validity?.min) { + customValidity = validity.min; + } else if (isValid2?.max && validity?.max) { + customValidity = validity.max; + } else if (isValid2?.minLength && validity?.minLength) { + customValidity = validity.minLength; + } else if (isValid2?.maxLength && validity?.maxLength) { + customValidity = validity.maxLength; + } else if (isValid2?.elements && validity?.elements) { + customValidity = validity.elements; + } else if (validity?.custom) { + customValidity = validity.custom; + } + return customValidity; +} + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var { ValidatedCheckboxControl } = unlock(import_components28.privateApis); +function Checkbox({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, label, description, isValid: isValid2 } = field; + const onChangeControl = (0, import_element38.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [data, getValue, onChange, setValue]); + return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + ValidatedCheckboxControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/combobox.mjs +var import_components29 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var { ValidatedComboboxControl } = unlock(import_components29.privateApis); +function Combobox3({ + data, + field, + onChange, + hideLabelFromVision, + validity +}) { + const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element39.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_components29.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( + ValidatedComboboxControl, + { + required: !!field.isValid?.required, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + placeholder, + options: elements, + onChange: onChangeControl, + hideLabelFromVision, + allowReset: true, + expandOnFocus: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_components31 = __toESM(require_components(), 1); +var import_element41 = __toESM(require_element(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_date3 = __toESM(require_date(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs +var import_components30 = __toESM(require_components(), 1); +var import_element40 = __toESM(require_element(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +var TIME_UNITS_OPTIONS = { + [OPERATOR_IN_THE_PAST]: [ + { value: "days", label: (0, import_i18n32.__)("Days") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks") }, + { value: "months", label: (0, import_i18n32.__)("Months") }, + { value: "years", label: (0, import_i18n32.__)("Years") } + ], + [OPERATOR_OVER]: [ + { value: "days", label: (0, import_i18n32.__)("Days ago") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks ago") }, + { value: "months", label: (0, import_i18n32.__)("Months ago") }, + { value: "years", label: (0, import_i18n32.__)("Years ago") } + ] +}; +function RelativeDateControl({ + className, + data, + field, + onChange, + hideLabelFromVision, + operator +}) { + const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; + const { id, label, getValue, setValue } = field; + const fieldValue = getValue({ item: data }); + const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; + const onChangeValue = (0, import_element40.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element40.useCallback)( + (newUnit) => onChange( + setValue({ + item: data, + value: { value: relValue, unit: newUnit } + }) + ), + [onChange, setValue, data, relValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.BaseControl, + { + id, + className: clsx_default(className, "dataviews-controls__relative-date"), + label, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Stack, { direction: "row", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.__experimentalNumberControl, + { + __next40pxDefaultSize: true, + className: "dataviews-controls__relative-date-number", + spinControls: "none", + min: 1, + step: 1, + value: relValue, + onChange: onChangeValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components30.SelectControl, + { + className: "dataviews-controls__relative-date-unit", + __next40pxDefaultSize: true, + label: (0, import_i18n32.__)("Unit"), + value: unit, + options, + onChange: onChangeUnit, + hideLabelFromVision: true + } + ) + ] }) + } + ); +} + +// packages/dataviews/build-module/field-types/utils/parse-date-time.mjs +var import_date2 = __toESM(require_date(), 1); +function parseDateTime(dateTimeString) { + if (!dateTimeString) { + return null; + } + const parsed = (0, import_date2.getDate)(dateTimeString); + return parsed && isValid(parsed) ? parsed : null; +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar, ValidatedInputControl } = unlock(import_components31.privateApis); +var formatDateTime = (date) => { + if (!date) { + return ""; + } + if (typeof date === "string") { + return date; + } + return format(date, "yyyy-MM-dd'T'HH:mm"); +}; +function CalendarDateTimeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, description, setValue, getValue, isValid: isValid2 } = field; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element41.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element41.useRef)(null); + const validationTimeoutRef = (0, import_element41.useRef)(); + const previousFocusRef = (0, import_element41.useRef)(null); + const onChangeCallback = (0, import_element41.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element41.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element41.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + let finalDateTime = newDate; + if (value) { + const currentDateTime = parseDateTime(value); + if (currentDateTime) { + finalDateTime = new Date(newDate); + finalDateTime.setHours(currentDateTime.getHours()); + finalDateTime.setMinutes( + currentDateTime.getMinutes() + ); + } + } + dateTimeValue = finalDateTime.toISOString(); + onChangeCallback(dateTimeValue); + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + } else { + onChangeCallback(void 0); + } + previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; + validationTimeoutRef.current = setTimeout(() => { + if (inputControlRef.current) { + inputControlRef.current.focus(); + inputControlRef.current.blur(); + onChangeCallback(dateTimeValue); + if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { + previousFocusRef.current.focus(); + } + } + }, 0); + }, + [onChangeCallback, value] + ); + const handleManualDateTimeChange = (0, import_element41.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = new Date(newValue); + onChangeCallback(dateTime.toISOString()); + const parsedDate = parseDateTime(dateTime.toISOString()); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } else { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const { format: fieldFormat } = field; + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date3.getSettings)().l10n.startOfWeek; + const { + timezone: { string: timezoneString } + } = (0, import_date3.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components31.BaseControl, + { + id, + label: displayLabel, + help: description, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + DateCalendar, + { + style: { width: "100%" }, + selected: value ? parseDateTime(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + ValidatedInputControl, + { + ref: inputControlRef, + __next40pxDefaultSize: true, + required: !!isValid2?.required, + customValidity: getCustomValidity(isValid2, validity), + type: "datetime-local", + label: (0, import_i18n33.__)("Date time"), + hideLabelFromVision: true, + value: value ? formatDateTime( + parseDateTime(value) || void 0 + ) : "", + onChange: handleManualDateTimeChange + } + ) + ] }) + } + ); +} +function DateTime({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__datetime", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + CalendarDateTimeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/date.mjs +var import_components32 = __toESM(require_components(), 1); +var import_element42 = __toESM(require_element(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); +var import_date4 = __toESM(require_date(), 1); +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock(import_components32.privateApis); +var DATE_PRESETS = [ + { + id: "today", + label: (0, import_i18n34.__)("Today"), + getValue: () => (0, import_date4.getDate)(null) + }, + { + id: "yesterday", + label: (0, import_i18n34.__)("Yesterday"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 1); + } + }, + { + id: "past-week", + label: (0, import_i18n34.__)("Past week"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 7); + } + }, + { + id: "past-month", + label: (0, import_i18n34.__)("Past month"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subMonths(today, 1); + } + } +]; +var DATE_RANGE_PRESETS = [ + { + id: "last-7-days", + label: (0, import_i18n34.__)("Last 7 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 7), today]; + } + }, + { + id: "last-30-days", + label: (0, import_i18n34.__)("Last 30 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 30), today]; + } + }, + { + id: "month-to-date", + label: (0, import_i18n34.__)("Month to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfMonth(today), today]; + } + }, + { + id: "last-year", + label: (0, import_i18n34.__)("Last year"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subYears(today, 1), today]; + } + }, + { + id: "year-to-date", + label: (0, import_i18n34.__)("Year to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfYear(today), today]; + } + } +]; +var parseDate = (dateString) => { + if (!dateString) { + return null; + } + const parsed = (0, import_date4.getDate)(dateString); + return parsed && isValid(parsed) ? parsed : null; +}; +var formatDate = (date) => { + if (!date) { + return ""; + } + return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); +}; +function ValidatedDateControl({ + field, + validity, + inputRefs, + isTouched, + setIsTouched, + children +}) { + const { isValid: isValid2 } = field; + const [customValidity, setCustomValidity] = (0, import_element42.useState)(void 0); + const validateRefs = (0, import_element42.useCallback)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + for (const ref of refs) { + const input = ref.current; + if (input && !input.validity.valid) { + setCustomValidity({ + type: "invalid", + message: input.validationMessage + }); + return; + } + } + setCustomValidity(void 0); + }, [inputRefs]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + for (const ref of refs) { + const input = ref.current; + if (input) { + input.setCustomValidity( + result?.type === "invalid" && result.message ? result.message : "" + ); + } + } + }, [inputRefs, isValid2, validity]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const handleInvalid = (event) => { + event.preventDefault(); + setIsTouched(true); + }; + for (const ref of refs) { + ref.current?.addEventListener("invalid", handleInvalid); + } + return () => { + for (const ref of refs) { + ref.current?.removeEventListener("invalid", handleInvalid); + } + }; + }, [inputRefs, setIsTouched]); + (0, import_element42.useEffect)(() => { + if (!isTouched) { + return; + } + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + if (result) { + setCustomValidity(result); + } else { + validateRefs(); + } + }, [isTouched, isValid2, validity, validateRefs]); + const onBlur = (event) => { + if (isTouched) { + return; + } + if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { + setIsTouched(true); + } + }; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { onBlur, children: [ + children, + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + "p", + { + className: clsx_default( + "components-validated-control__indicator", + customValidity.type === "invalid" ? "is-invalid" : void 0 + ), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Icon, + { + className: "components-validated-control__indicator-icon", + icon: error_default, + size: 16, + fill: "currentColor" + } + ), + customValidity.message + ] + } + ) }) + ] }); +} +function CalendarDateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { + id, + label, + setValue, + getValue, + isValid: isValid2, + format: fieldFormat + } = field; + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const validityTargetRef = (0, import_element42.useRef)(null); + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element42.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (newValue) => { + onChangeCallback(newValue); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const { + timezone: { string: timezoneString } + } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: validityTargetRef, + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + disabled: !!selectedPresetId, + accessibleWhenDisabled: false, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: validityTargetRef, + type: "date", + label: (0, import_i18n34.__)("Date"), + hideLabelFromVision: true, + value, + onChange: handleManualDateChange, + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + DateCalendar2, + { + style: { width: "100%" }, + selected: value ? parseDate(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function CalendarDateRangeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, getValue, setValue, format: fieldFormat } = field; + let value; + const fieldValue = getValue({ item: data }); + if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { + value = fieldValue; + } + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const selectedRange = (0, import_element42.useMemo)(() => { + if (!value) { + return { from: void 0, to: void 0 }; + } + const [from, to] = value; + return { + from: parseDate(from) || void 0, + to: parseDate(to) || void 0 + }; + }, [value]); + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const fromInputRef = (0, import_element42.useRef)(null); + const toInputRef = (0, import_element42.useRef)(null); + const updateDateRange = (0, import_element42.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element42.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (fromOrTo, newValue) => { + const [currentFrom, currentTo] = value || [ + void 0, + void 0 + ]; + const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; + const updatedTo = fromOrTo === "to" ? newValue : currentTo; + updateDateRange(updatedFrom, updatedTo); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [value, updateDateRange] + ); + const { timezone } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (field.isValid?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!field.isValid?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: [fromInputRef, toInputRef], + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_RANGE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + accessibleWhenDisabled: false, + disabled: !!selectedPresetId, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "space-between", + className: "dataviews-controls__date-range-inputs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: fromInputRef, + type: "date", + label: (0, import_i18n34.__)("From"), + hideLabelFromVision: true, + value: value?.[0], + onChange: (newValue) => handleManualDateChange("from", newValue), + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: toInputRef, + type: "date", + label: (0, import_i18n34.__)("To"), + hideLabelFromVision: true, + value: value?.[1], + onChange: (newValue) => handleManualDateChange("to", newValue), + required: !!field.isValid?.required + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + DateRangeCalendar, + { + style: { width: "100%" }, + selected: selectedRange, + onSelect: onSelectCalendarRange, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezone.string || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function DateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__date", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + if (operator === OPERATOR_BETWEEN) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + CalendarDateRangeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + CalendarDateControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components34 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element43 = __toESM(require_element(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components33.privateApis); +function ValidatedText({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + type, + prefix, + suffix, + validity +}) { + const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element43.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + ValidatedInputControl2, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + hideLabelFromVision, + type, + prefix, + suffix, + pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components34.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components34.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components35 = __toESM(require_components(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components35.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components36.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components37 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components37.privateApis); +function toNumberOrEmpty(value) { + if (value === "" || value === void 0) { + return ""; + } + const number = Number(value); + return Number.isFinite(number) ? number : ""; +} +function BetweenControls({ + value, + onChange, + hideLabelFromVision, + step +}) { + const [min = "", max = ""] = value; + const onChangeMin = (0, import_element44.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element44.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_components37.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Min."), + value: min, + max: max ? Number(max) - step : void 0, + onChange: onChangeMin, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Max."), + value: max, + min: min ? Number(min) + step : void 0, + onChange: onChangeMax, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ) + ] }) + } + ); +} +function ValidatedNumber({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + const decimals = field.format?.decimals ?? 0; + const step = Math.pow(10, Math.abs(decimals) * -1); + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + // Do not convert an empty string or undefined to a number, + // otherwise there's a mismatch between the UI control (empty) + // and the data relied by onChange (0). + value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) + }) + ); + }, + [data, onChange, setValue] + ); + const onChangeBetweenControls = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + if (operator === OPERATOR_BETWEEN) { + let valueBetween = ["", ""]; + if (Array.isArray(value) && value.length === 2 && value.every( + (element) => typeof element === "number" || element === "" + )) { + valueBetween = value; + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedNumberControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + value, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + step, + min: isValid2.min ? isValid2.min.constraint : void 0, + max: isValid2.max ? isValid2.max.constraint : void 0 + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/integer.mjs +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components38.privateApis); +function Radio({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = getValue({ item: data }); + const onChangeControl = (0, import_element45.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components38.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + ValidatedRadioControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + onChange: onChangeControl, + options: elements, + selected: value, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/select.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components39.privateApis); +function Select({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { type, label, description, getValue, setValue, isValid: isValid2 } = field; + const isMultiple = type === "array"; + const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); + const onChangeControl = (0, import_element46.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedSelectControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + options: elements, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + multiple: isMultiple + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/text.mjs +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function Text2({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + prefix: prefix ? (0, import_element47.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element47.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleControl } = unlock(import_components40.privateApis); +function Toggle({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const onChangeControl = (0, import_element48.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + ValidatedToggleControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/textarea.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +var { ValidatedTextareaControl } = unlock(import_components41.privateApis); +function Textarea({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { rows = 4 } = config || {}; + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }); + const onChangeControl = (0, import_element49.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + ValidatedTextareaControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + rows, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleGroupControl } = unlock(import_components42.privateApis); +function ToggleGroup({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ValidatedToggleGroupControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + __next40pxDefaultSize: true, + isBlock: true, + label: field.label, + help: selectedOption?.description || field.description, + onChange: onChangeControl, + value, + hideLabelFromVision, + children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + import_components42.__experimentalToggleGroupControlOption, + { + label: el.label, + value: el.value + }, + el.value + )) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/array.mjs +var import_components43 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +var { ValidatedFormTokenField } = unlock(import_components43.privateApis); +function ArrayControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const arrayValueAsElements = (0, import_element51.useMemo)( + () => Array.isArray(value) ? value.map((token) => { + const element = elements?.find( + (suggestion) => suggestion.value === token + ); + return element || { value: token, label: token }; + }) : [], + [value, elements] + ); + const onChangeControl = (0, import_element51.useCallback)( + (tokens) => { + const valueTokens = tokens.map((token) => { + if (typeof token === "object" && "value" in token) { + return token.value; + } + return token; + }); + onChange(setValue({ item: data, value: valueTokens })); + }, + [onChange, setValue, data] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + ValidatedFormTokenField, + { + required: !!isValid2?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label: hideLabelFromVision ? void 0 : label, + value: arrayValueAsElements, + onChange: onChangeControl, + placeholder, + suggestions: elements?.map((element) => element.value), + __experimentalValidateInput: (token) => { + if (field.isValid?.elements && elements) { + return elements.some( + (element) => element.value === token || element.label === token + ); + } + return true; + }, + __experimentalExpandOnFocus: elements && elements.length > 0, + __experimentalShowHowTo: !field.isValid?.elements, + displayTransform: (token) => { + if (typeof token === "object" && "label" in token) { + return token.label; + } + if (typeof token === "string" && elements) { + const element = elements.find( + (el) => el.value === token + ); + return element?.label || token; + } + return token; + }, + __experimentalRenderItem: ({ item }) => { + if (typeof item === "string" && elements) { + const element = elements.find( + (el) => el.value === item + ); + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: item }); + } + } + ); +} + +// node_modules/colord/index.mjs +var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; +var t = function(r3) { + return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; +}; +var n = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; +}; +var e = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; +}; +var u = function(r3) { + return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; +}; +var a = function(r3) { + return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; +}; +var o = function(r3) { + return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; +}; +var i = /^#([0-9a-f]{3,8})$/i; +var s = function(r3) { + var t2 = r3.toString(16); + return t2.length < 2 ? "0" + t2 : t2; +}; +var h = function(r3) { + var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0; + return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; +}; +var b = function(r3) { + var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6; + return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 }; +}; +var g = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; +}; +var d = function(r3) { + return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; +}; +var f = function(r3) { + return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; +}; +var c = function(r3) { + return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; +}; +var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var y = { string: [[function(r3) { + var t2 = i.exec(r3); + return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; +}, "hex"], [function(r3) { + var t2 = v.exec(r3) || m.exec(r3); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; +}, "rgb"], [function(t2) { + var n2 = l.exec(t2) || p.exec(t2); + if (!n2) return null; + var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(a2); +}, "hsl"]], object: [[function(r3) { + var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2; + return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; +}, "rgb"], [function(r3) { + var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2; + if (!t(n2) || !t(e2) || !t(u2)) return null; + var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) }); + return f(i2); +}, "hsl"], [function(r3) { + var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; + if (!t(n2) || !t(a2) || !t(o2)) return null; + var h2 = (function(r4) { + return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; + })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) }); + return b(h2); +}, "hsv"]] }; +var N = function(r3, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r3); + if (e2) return [e2, t2[n2][1]]; + } + return [null, void 0]; +}; +var x = function(r3) { + return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; +}; +var M = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; +}; +var H = function(r3) { + return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; +}; +var $ = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; +}; +var j = (function() { + function r3(r4) { + this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r3.prototype.isValid = function() { + return null !== this.parsed; + }, r3.prototype.brightness = function() { + return n(H(this.rgba), 2); + }, r3.prototype.isDark = function() { + return H(this.rgba) < 0.5; + }, r3.prototype.isLight = function() { + return H(this.rgba) >= 0.5; + }, r3.prototype.toHex = function() { + return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2; + var r4, t2, e2, u2, a2, i2; + }, r3.prototype.toRgb = function() { + return o(this.rgba); + }, r3.prototype.toRgbString = function() { + return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsl = function() { + return d(c(this.rgba)); + }, r3.prototype.toHslString = function() { + return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsv = function() { + return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; + var r4; + }, r3.prototype.invert = function() { + return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); + var r4; + }, r3.prototype.saturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); + }, r3.prototype.desaturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); + }, r3.prototype.grayscale = function() { + return w(M(this.rgba, -1)); + }, r3.prototype.lighten = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); + }, r3.prototype.darken = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); + }, r3.prototype.rotate = function(r4) { + return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); + }, r3.prototype.alpha = function(r4) { + return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3); + var t2; + }, r3.prototype.hue = function(r4) { + var t2 = c(this.rgba); + return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r3.prototype.isEqual = function(r4) { + return this.toHex() === w(r4).toHex(); + }, r3; +})(); +var w = function(r3) { + return r3 instanceof j ? r3 : new j(r3); +}; + +// packages/dataviews/build-module/components/dataform-controls/color.mjs +var import_components44 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3, Picker } = unlock(import_components44.privateApis); +var ColorPicker = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + import_components44.Dropdown, + { + renderToggle: ({ onToggle, isOpen }) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + "button", + { + type: "button", + onClick: onToggle, + style: { + width: "24px", + height: "24px", + borderRadius: "50%", + backgroundColor: validColor, + border: "1px solid #ddd", + cursor: "pointer", + outline: isOpen ? "2px solid #007cba" : "none", + outlineOffset: "2px", + display: "flex", + alignItems: "center", + justifyContent: "center", + padding: 0, + margin: 0 + }, + "aria-label": "Open color picker" + } + ) }), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { style: { padding: "16px" }, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + Picker, + { + color: w(validColor), + onChange: onColorChange, + enableAlpha: true + } + ) }) + } + ); +}; +function Color({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }) || ""; + const handleColorChange = (0, import_element52.useCallback)( + (colorObject) => { + onChange(setValue({ item: data, value: colorObject.toHex() })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element52.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ValidatedInputControl3, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value, + help: description, + onChange: handleInputChange, + hideLabelFromVision, + type: "text", + prefix: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ColorPicker, + { + color: value, + onColorChange: handleColorChange + } + ) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +function Password({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const [isVisible2, setIsVisible] = (0, import_element53.useState)(false); + const toggleVisibility = (0, import_element53.useCallback)(() => { + setIsVisible((prev) => !prev); + }, []); + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n36.__)("Hide password") : (0, import_i18n36.__)("Show password") + } + ) }) + } + } + ); +} + +// packages/dataviews/build-module/field-types/utils/has-elements.mjs +function hasElements(field) { + return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; +} + +// packages/dataviews/build-module/components/dataform-controls/index.mjs +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + array: ArrayControl, + checkbox: Checkbox, + color: Color, + combobox: Combobox3, + datetime: DateTime, + date: DateControl, + email: Email, + telephone: Telephone, + url: Url, + integer: Integer, + number: Number2, + password: Password, + radio: Radio, + select: Select, + text: Text2, + toggle: Toggle, + textarea: Textarea, + toggleGroup: ToggleGroup +}; +function isEditConfig(value) { + return value && typeof value === "object" && typeof value.control === "string"; +} +function createConfiguredControl(config) { + const { control, ...controlConfig } = config; + const BaseControlType = getControlByType(control); + if (BaseControlType === null) { + return null; + } + return function ConfiguredControl(props) { + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(BaseControlType, { ...props, config: controlConfig }); + }; +} +function getControl(field, fallback) { + if (typeof field.Edit === "function") { + return field.Edit; + } + if (typeof field.Edit === "string") { + return getControlByType(field.Edit); + } + if (isEditConfig(field.Edit)) { + return createConfiguredControl(field.Edit); + } + if (hasElements(field) && field.type !== "array") { + return getControlByType("select"); + } + if (fallback === null) { + return null; + } + return getControlByType(fallback); +} +function getControlByType(type) { + if (Object.keys(FORM_CONTROLS).includes(type)) { + return FORM_CONTROLS[type]; + } + return null; +} + +// packages/dataviews/build-module/field-types/utils/get-filter-by.mjs +function getFilterBy(field, defaultOperators, validOperators) { + if (field.filterBy === false) { + return false; + } + const operators = field.filterBy?.operators?.filter( + (op) => validOperators.includes(op) + ) ?? defaultOperators; + if (operators.length === 0) { + return false; + } + return { + isPrimary: !!field.filterBy?.isPrimary, + operators + }; +} +var get_filter_by_default = getFilterBy; + +// packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs +var getValueFromId = (id) => ({ item }) => { + const path = id.split("."); + let value = item; + for (const segment of path) { + if (value.hasOwnProperty(segment)) { + value = value[segment]; + } else { + value = void 0; + } + } + return value; +}; +var get_value_from_id_default = getValueFromId; + +// packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs +var setValueFromId = (id) => ({ value }) => { + const path = id.split("."); + const result = {}; + let current = result; + for (const segment of path.slice(0, -1)) { + current[segment] = {}; + current = current[segment]; + } + current[path.at(-1)] = value; + return result; +}; +var set_value_from_id_default = setValueFromId; + +// packages/dataviews/build-module/field-types/email.mjs +var import_i18n37 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/render-from-elements.mjs +function RenderFromElements({ + item, + field +}) { + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = field.getValue({ item }); + if (isLoading) { + return value; + } + if (elements.length === 0) { + return value; + } + return elements?.find((element) => element.value === value)?.label || field.getValue({ item }); +} + +// packages/dataviews/build-module/field-types/utils/render-default.mjs +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RenderFromElements, { item, field }); + } + return field.getValueFormatted({ item, field }); +} + +// packages/dataviews/build-module/field-types/utils/sort-text.mjs +var sort_text_default = (a2, b2, direction) => { + return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-required.mjs +function isValidRequired(item, field) { + const value = field.getValue({ item }); + return ![void 0, "", null].includes(value); +} + +// packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs +function isValidMinLength(item, field) { + if (typeof field.isValid.minLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length >= field.isValid.minLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs +function isValidMaxLength(item, field) { + if (typeof field.isValid.maxLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length <= field.isValid.maxLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs +function isValidPattern(item, field) { + if (field.isValid.pattern?.constraint === void 0) { + return true; + } + try { + const regexp = new RegExp(field.isValid.pattern.constraint); + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return regexp.test(String(value)); + } catch { + return false; + } +} + +// packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs +function isValidElements(item, field) { + const elements = field.elements ?? []; + const validValues = elements.map((el) => el.value); + if (validValues.length === 0) { + return true; + } + const value = field.getValue({ item }); + return [].concat(value).every((v2) => validValues.includes(v2)); +} + +// packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs +function getValueFormatted({ + item, + field +}) { + return field.getValue({ item }); +} +var get_value_formatted_default_default = getValueFormatted; + +// packages/dataviews/build-module/field-types/email.mjs +var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +function isValidCustom(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { + return (0, import_i18n37.__)("Value must be a valid email address."); + } + return null; +} +var email_default = { + type: "email", + render, + Edit: "email", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements, + custom: isValidCustom + } +}; + +// packages/dataviews/build-module/field-types/integer.mjs +var import_i18n38 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/sort-number.mjs +var sort_number_default = (a2, b2, direction) => { + return direction === "asc" ? a2 - b2 : b2 - a2; +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-min.mjs +function isValidMin(item, field) { + if (typeof field.isValid.min?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) >= field.isValid.min.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max.mjs +function isValidMax(item, field) { + if (typeof field.isValid.max?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) <= field.isValid.max.constraint; +} + +// packages/dataviews/build-module/field-types/integer.mjs +var format2 = { + separatorThousand: "," +}; +function getValueFormatted2({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatInteger; + if (field.type !== "integer") { + formatInteger = format2; + } else { + formatInteger = field.format; + } + const { separatorThousand } = formatInteger; + const integerValue = Math.trunc(value); + if (!separatorThousand) { + return String(integerValue); + } + return String(integerValue).replace( + /\B(?=(\d{3})+(?!\d))/g, + separatorThousand + ); +} +function isValidCustom2(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { + return (0, import_i18n38.__)("Value must be an integer."); + } + return null; +} +var integer_default = { + type: "integer", + render, + Edit: "integer", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format2, + getValueFormatted: getValueFormatted2, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom2 + } +}; + +// packages/dataviews/build-module/field-types/number.mjs +var import_i18n39 = __toESM(require_i18n(), 1); +var format3 = { + separatorThousand: ",", + separatorDecimal: ".", + decimals: 2 +}; +function getValueFormatted3({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatNumber; + if (field.type !== "number") { + formatNumber = format3; + } else { + formatNumber = field.format; + } + const { separatorThousand, separatorDecimal, decimals } = formatNumber; + const fixedValue = value.toFixed(decimals); + const [integerPart, decimalPart] = fixedValue.split("."); + const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; + return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; +} +function isEmpty2(value) { + return value === "" || value === void 0 || value === null; +} +function isValidCustom3(item, field) { + const value = field.getValue({ item }); + if (!isEmpty2(value) && !Number.isFinite(value)) { + return (0, import_i18n39.__)("Value must be a number."); + } + return null; +} +var number_default = { + type: "number", + render, + Edit: "number", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format3, + getValueFormatted: getValueFormatted3, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom3 + } +}; + +// packages/dataviews/build-module/field-types/text.mjs +var text_default = { + type: "text", + render, + Edit: "text", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + // Single selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/datetime.mjs +var import_date6 = __toESM(require_date(), 1); +var format4 = { + datetime: (0, import_date6.getSettings)().formats.datetime, + weekStartsOn: (0, import_date6.getSettings)().l10n.startOfWeek +}; +function getValueFormatted4({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDatetime; + if (field.type !== "datetime") { + formatDatetime = format4; + } else { + formatDatetime = field.format; + } + return (0, import_date6.dateI18n)(formatDatetime.datetime, (0, import_date6.getDate)(value)); +} +var sort = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var datetime_default = { + type: "datetime", + render, + Edit: "datetime", + sort, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + format: format4, + getValueFormatted: getValueFormatted4, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/date.mjs +var import_date7 = __toESM(require_date(), 1); +var format5 = { + date: (0, import_date7.getSettings)().formats.date, + weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek +}; +function getValueFormatted5({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDate2; + if (field.type !== "date") { + formatDate2 = format5; + } else { + formatDate2 = field.format; + } + return (0, import_date7.dateI18n)(formatDate2.date, (0, import_date7.getDate)(value)); +} +var sort2 = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var date_default = { + type: "date", + render, + Edit: "date", + sort: sort2, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + format: format5, + getValueFormatted: getValueFormatted5, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/boolean.mjs +var import_i18n40 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs +function isValidRequiredForBool(item, field) { + const value = field.getValue({ item }); + return value === true; +} + +// packages/dataviews/build-module/field-types/boolean.mjs +function getValueFormatted6({ + item, + field +}) { + const value = field.getValue({ item }); + if (value === true) { + return (0, import_i18n40.__)("True"); + } + if (value === false) { + return (0, import_i18n40.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n40.__)("Value must be true, false, or undefined"); + } + return null; +} +var sort3 = (a2, b2, direction) => { + const boolA = Boolean(a2); + const boolB = Boolean(b2); + if (boolA === boolB) { + return 0; + } + if (direction === "asc") { + return boolA ? 1 : -1; + } + return boolA ? -1 : 1; +}; +var boolean_default = { + type: "boolean", + render, + Edit: "checkbox", + sort: sort3, + validate: { + required: isValidRequiredForBool, + elements: isValidElements, + custom: isValidCustom4 + }, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + format: {}, + getValueFormatted: getValueFormatted6 +}; + +// packages/dataviews/build-module/field-types/media.mjs +var media_default = { + type: "media", + render: () => null, + Edit: null, + sort: () => 0, + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: get_value_formatted_default_default, + // cannot validate any constraint, so + // the only available validation for the field author + // would be providing a custom validator. + validate: {} +}; + +// packages/dataviews/build-module/field-types/array.mjs +var import_i18n41 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs +function isValidRequiredForArray(item, field) { + const value = field.getValue({ item }); + return Array.isArray(value) && value.length > 0 && value.every( + (element) => ![void 0, "", null].includes(element) + ); +} + +// packages/dataviews/build-module/field-types/array.mjs +function getValueFormatted7({ + item, + field +}) { + const value = field.getValue({ item }); + const arr = Array.isArray(value) ? value : []; + return arr.join(", "); +} +function render2({ item, field }) { + return getValueFormatted7({ item, field }); +} +function isValidCustom5(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Array.isArray(value)) { + return (0, import_i18n41.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n41.__)("Every value must be a string."); + } + return null; +} +var sort4 = (a2, b2, direction) => { + const arrA = Array.isArray(a2) ? a2 : []; + const arrB = Array.isArray(b2) ? b2 : []; + if (arrA.length !== arrB.length) { + return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; + } + const joinedA = arrA.join(","); + const joinedB = arrB.join(","); + return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); +}; +var array_default = { + type: "array", + render: render2, + Edit: "array", + sort: sort4, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: getValueFormatted7, + validate: { + required: isValidRequiredForArray, + elements: isValidElements, + custom: isValidCustom5 + } +}; + +// packages/dataviews/build-module/field-types/password.mjs +function getValueFormatted8({ + item, + field +}) { + return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; +} +var password_default = { + type: "password", + render, + Edit: "password", + sort: () => 0, + // Passwords should not be sortable for security reasons + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: getValueFormatted8, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/telephone.mjs +var telephone_default = { + type: "telephone", + render, + Edit: "telephone", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/color.mjs +var import_i18n42 = __toESM(require_i18n(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(RenderFromElements, { item, field }); + } + const value = get_value_formatted_default_default({ item, field }); + if (!value || !w(value).isValid()) { + return value; + } + return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: value }) + ] }); +} +function isValidCustom6(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !w(value).isValid()) { + return (0, import_i18n42.__)("Value must be a valid color."); + } + return null; +} +var sort5 = (a2, b2, direction) => { + const colorA = w(a2); + const colorB = w(b2); + if (!colorA.isValid() && !colorB.isValid()) { + return 0; + } + if (!colorA.isValid()) { + return direction === "asc" ? 1 : -1; + } + if (!colorB.isValid()) { + return direction === "asc" ? -1 : 1; + } + const hslA = colorA.toHsl(); + const hslB = colorB.toHsl(); + if (hslA.h !== hslB.h) { + return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; + } + if (hslA.s !== hslB.s) { + return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; + } + return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; +}; +var color_default = { + type: "color", + render: render3, + Edit: "color", + sort: sort5, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_IS_ANY, + OPERATOR_IS_NONE + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements, + custom: isValidCustom6 + } +}; + +// packages/dataviews/build-module/field-types/url.mjs +var url_default = { + type: "url", + render, + Edit: "url", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/no-type.mjs +var sort6 = (a2, b2, direction) => { + if (typeof a2 === "number" && typeof b2 === "number") { + return sort_number_default(a2, b2, direction); + } + return sort_text_default(a2, b2, direction); +}; +var no_type_default = { + // type: no type for this one + render, + Edit: null, + sort: sort6, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: getAllOperatorNames(), + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/utils/get-is-valid.mjs +function getIsValid(field, fieldType) { + let required; + if (field.isValid?.required === true && fieldType.validate.required !== void 0) { + required = { + constraint: true, + validate: fieldType.validate.required + }; + } + let elements; + if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out + field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { + elements = { + constraint: true, + validate: fieldType.validate.elements + }; + } + let min; + if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { + min = { + constraint: field.isValid.min, + validate: fieldType.validate.min + }; + } + let max; + if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { + max = { + constraint: field.isValid.max, + validate: fieldType.validate.max + }; + } + let minLength; + if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { + minLength = { + constraint: field.isValid.minLength, + validate: fieldType.validate.minLength + }; + } + let maxLength; + if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { + maxLength = { + constraint: field.isValid.maxLength, + validate: fieldType.validate.maxLength + }; + } + let pattern; + if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { + pattern = { + constraint: field.isValid?.pattern, + validate: fieldType.validate.pattern + }; + } + const custom = field.isValid?.custom ?? fieldType.validate.custom; + return { + required, + elements, + min, + max, + minLength, + maxLength, + pattern, + custom + }; +} + +// packages/dataviews/build-module/field-types/utils/get-filter.mjs +function getFilter(fieldType) { + return fieldType.validOperators.reduce((accumulator, operator) => { + const operatorObj = getOperatorByName(operator); + if (operatorObj?.filter) { + accumulator[operator] = operatorObj.filter; + } + return accumulator; + }, {}); +} + +// packages/dataviews/build-module/field-types/utils/get-format.mjs +function getFormat(field, fieldType) { + return { + ...fieldType.format, + ...field.format + }; +} +var get_format_default = getFormat; + +// packages/dataviews/build-module/field-types/index.mjs +function getFieldTypeByName(type) { + const found = [ + email_default, + integer_default, + number_default, + text_default, + datetime_default, + date_default, + boolean_default, + media_default, + array_default, + password_default, + telephone_default, + color_default, + url_default + ].find((fieldType) => fieldType?.type === type); + if (!!found) { + return found; + } + return no_type_default; +} +function normalizeFields(fields) { + return fields.map((field) => { + const fieldType = getFieldTypeByName(field.type); + const getValue = field.getValue || get_value_from_id_default(field.id); + const sort7 = function(a2, b2, direction) { + const aValue = getValue({ item: a2 }); + const bValue = getValue({ item: b2 }); + return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); + }; + return { + id: field.id, + label: field.label || field.id, + header: field.header || field.label || field.id, + description: field.description, + placeholder: field.placeholder, + getValue, + setValue: field.setValue || set_value_from_id_default(field.id), + elements: field.elements, + getElements: field.getElements, + hasElements: hasElements(field), + isVisible: field.isVisible, + enableHiding: field.enableHiding ?? true, + readOnly: field.readOnly ?? false, + // The type provides defaults for the following props + type: fieldType.type, + render: field.render ?? fieldType.render, + Edit: getControl(field, fieldType.Edit), + sort: sort7, + enableSorting: field.enableSorting ?? fieldType.enableSorting, + enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, + isValid: getIsValid(field, fieldType), + filterBy: get_filter_by_default( + field, + fieldType.defaultOperators, + fieldType.validOperators + ), + filter: getFilter(fieldType), + format: get_format_default(field, fieldType), + getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted + }; + }); +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +var defaultGetItemId = (item) => item.id; +var defaultIsItemClickable = () => true; +var EMPTY_ARRAY6 = []; +var dataViewsLayouts = VIEW_LAYOUTS.filter( + (viewLayout) => !viewLayout.isPicker +); +function DefaultUI({ + header, + search = true, + searchLabel = void 0 +}) { + return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(DataViewsFooter, {}) + ] }); +} +function DataViews({ + view, + onChangeView, + fields, + search = true, + searchLabel = void 0, + actions = EMPTY_ARRAY6, + data, + getItemId: getItemId2 = defaultGetItemId, + getItemLevel: getItemLevel2, + isLoading = false, + paginationInfo, + defaultLayouts: defaultLayoutsProperty, + selection: selectionProperty, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable = defaultIsItemClickable, + header, + children, + config = { perPageSizes: [10, 20, 50, 100] }, + empty +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element54.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element54.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element54.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element54.useState)(null); + function setSelectionWithChange(value) { + const newValue = typeof value === "function" ? value(selection) : value; + if (isUncontrolled) { + setSelectionState(newValue); + } + if (onChangeSelection) { + onChangeSelection(newValue); + } + } + const _fields = (0, import_element54.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element54.useMemo)(() => { + return selection.filter( + (id) => data.some((item) => getItemId2(item) === id) + ); + }, [selection, data, getItemId2]); + const filters = use_filters_default(_fields, view); + const hasPrimaryOrLockedFilters = (0, import_element54.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element54.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element54.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element54.useEffect)(() => { + if (!view.infiniteScrollEnabled || !containerRef.current) { + return; + } + const handleScroll = (0, import_compose12.throttle)((event) => { + const target = event.target; + const scrollTop = target.scrollTop; + const scrollHeight = target.scrollHeight; + const clientHeight = target.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 100) { + infiniteScrollHandler?.(); + } + }, 100); + const container = containerRef.current; + container.addEventListener("scroll", handleScroll); + return () => { + container.removeEventListener("scroll", handleScroll); + handleScroll.cancel(); + }; + }, [infiniteScrollHandler, view.infiniteScrollEnabled]); + const defaultLayouts = (0, import_element54.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data, + isLoading, + paginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInfiniteScrollHandler: !!infiniteScrollHandler + }, + children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + DefaultUI, + { + header, + search, + searchLabel + } + ) }) + } + ); +} +var DataViewsSubComponents = DataViews; +DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; +DataViewsSubComponents.Filters = filters_default; +DataViewsSubComponents.FiltersToggled = filters_toggled_default; +DataViewsSubComponents.FiltersToggle = toggle_default; +DataViewsSubComponents.Layout = DataViewsLayout; +DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; +DataViewsSubComponents.Pagination = DataViewsPagination; +DataViewsSubComponents.Search = dataviews_search_default; +DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; +DataViewsSubComponents.Footer = DataViewsFooter; +var dataviews_default = DataViewsSubComponents; + +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element55 = __toESM(require_element(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element55.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime93.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/header.mjs +var import_components47 = __toESM(require_components(), 1); + +// packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs +var import_components46 = __toESM(require_components(), 1); +var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components46.createSlotFill)("SidebarToggle"); + +// packages/admin-ui/build-module/page/header.mjs +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + showSidebarToggle = true +}) { + const classes = clsx_default("admin-ui-page", className); + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/post-list/stage.tsx +var import_core_data2 = __toESM(require_core_data()); +var import_components48 = __toESM(require_components()); +var import_data9 = __toESM(require_data()); +var import_element56 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_i18n43 = __toESM(require_i18n()); + +// routes/lock-unlock.ts +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" +); + +// routes/post-list/view-utils.ts +var import_data8 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var DEFAULT_VIEW = { + type: "table", + sort: { + field: "date", + direction: "desc" + }, + fields: ["author", "status", "date"], + titleField: "title", + mediaField: "featured_media", + descriptionField: "excerpt" +}; +var DEFAULT_LAYOUTS = { + table: {}, + grid: {}, + list: {} +}; +var DEFAULT_VIEWS = [ + { + slug: "all", + label: "All" + }, + { + slug: "publish", + label: "Published" + }, + { + slug: "draft", + label: "Draft" + }, + { + slug: "pending", + label: "Pending" + }, + { + slug: "private", + label: "Private" + }, + { + slug: "trash", + label: "Trash" + } +]; +function getActiveViewOverridesForTab(slug) { + if (slug === "all") { + return {}; + } + return { + filters: [ + { + field: "status", + operator: "is", + value: slug + } + ] + }; +} +function getDefaultView(postType) { + return { + ...DEFAULT_VIEW, + showLevels: postType?.hierarchical + }; +} +function viewToQuery(view, postType) { + const result = {}; + if (void 0 !== view.perPage) { + result.per_page = view.perPage; + } + if (void 0 !== view.page) { + result.page = view.page; + } + if (![void 0, ""].includes(view.search)) { + result.search = view.search; + } + if (void 0 !== view.sort?.field) { + let sortField = view.sort.field; + if (sortField === "attached_to") { + sortField = "parent"; + } + result.orderby = sortField; + } + if (void 0 !== view.sort?.direction) { + result.order = view.sort.direction; + } + if (view.showLevels) { + result.orderby_hierarchy = true; + } + const status = view.filters?.find( + (filter) => filter.field === "status" + ); + if (status) { + result.status = status.value; + } else if (postType === "attachment") { + result.status = "inherit"; + } else { + result.status = "draft,future,pending,private,publish"; + } + const author = view.filters?.find( + (filter) => filter.field === "author" + ); + if (author && author.operator === "is") { + result.author = author.value; + } else if (author && author.operator === "isNot") { + result.author_exclude = author.value; + } + const commentStatus = view.filters?.find( + (filter) => filter.field === "comment_status" + ); + if (commentStatus && commentStatus.operator === "is") { + result.comment_status = commentStatus.value; + } else if (commentStatus && commentStatus.operator === "isNot") { + result.comment_status_exclude = commentStatus.value; + } + const mediaType = view.filters?.find( + (filter) => filter.field === "media_type" + ); + if (mediaType) { + result.media_type = mediaType.value; + } + const date = view.filters?.find((filter) => filter.field === "date"); + if (date && date.value) { + if (date.operator === "before") { + result.before = date.value; + } else if (date.operator === "after") { + result.after = date.value; + } + } + if (postType === "attachment") { + result._embed = "wp:attached-to"; + } + return result; +} + +// routes/post-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='f4fc5f9fa1']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "f4fc5f9fa1"); + style.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-post-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}')); + document.head.appendChild(style); +} + +// routes/post-list/stage.tsx +var { useEntityRecordsWithPermissions } = unlock2(import_core_data2.privateApis); +var { usePostActions, usePostFields } = unlock2(import_editor.privateApis); +var { Tabs } = unlock2(import_components48.privateApis); +function getItemId(item) { + return item.id.toString(); +} +function getItemLevel(item) { + return item.level ?? 0; +} +function PostList() { + const invalidate = useInvalidate(); + const { type: postType, slug = "all" } = useParams({ + from: "/types/$type/list/$slug" + }); + const navigate = useNavigate(); + const searchParams = useSearch({ from: "/types/$type/list/$slug" }); + const postTypeObject = (0, import_data9.useSelect)( + (select2) => select2(import_core_data2.store).getPostType(postType), + [postType] + ); + const labels = postTypeObject?.labels; + const canCreateRecord = (0, import_data9.useSelect)( + (select2) => select2(import_core_data2.store).canUser("create", { + kind: "postType", + name: postType + }), + [postType] + ); + const defaultView = (0, import_element56.useMemo)(() => { + return getDefaultView(postTypeObject); + }, [postTypeObject]); + const activeViewOverrides = (0, import_element56.useMemo)( + () => getActiveViewOverridesForTab(slug), + [slug] + ); + const handleQueryParamsChange = (0, import_element56.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, isModified, updateView, resetToDefault } = useView({ + kind: "postType", + name: postType, + slug: "default-new", + defaultView, + activeViewOverrides, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const onReset = () => { + resetToDefault(); + invalidate(); + }; + const onChangeView = (newView) => { + updateView(newView); + if (newView.type !== view.type) { + invalidate(); + } + }; + const postTypeQuery = (0, import_element56.useMemo)( + () => viewToQuery(view, postType), + [view, postType] + ); + const { + records: posts, + totalItems, + totalPages, + isResolving + } = useEntityRecordsWithPermissions("postType", postType, postTypeQuery); + const allFields = usePostFields({ + postType + }); + const fields = (0, import_element56.useMemo)(() => { + return allFields.filter((field) => { + if (field.id === "status" && slug !== "all") { + return false; + } + return true; + }).map((field) => { + if (field.id === "status") { + return { ...field, filterBy: false }; + } + return field; + }); + }, [allFields, slug]); + const cleanupDeletedPostIdsFromUrl = (0, import_element56.useCallback)( + (deletedItems) => { + const deletedIds = deletedItems.map( + (item) => item.id.toString() + ); + const currentPostIds = searchParams.postIds || []; + const remainingPostIds = currentPostIds.filter( + (id) => !deletedIds.includes(id) + ); + if (remainingPostIds.length !== currentPostIds.length) { + navigate({ + search: { + ...searchParams, + postIds: remainingPostIds.length > 0 ? remainingPostIds : void 0 + } + }); + } else { + invalidate(); + } + }, + [invalidate, searchParams, navigate] + ); + const postTypeActions = usePostActions({ + postType, + context: "list", + onActionPerformed: (actionId, items) => { + if (actionId === "move-to-trash" || actionId === "permanently-delete") { + cleanupDeletedPostIdsFromUrl(items); + } + } + }); + const actions = (0, import_element56.useMemo)(() => { + return [ + ...postTypeActions?.flatMap((action) => { + switch (action.id) { + case "permanently-delete": + return [ + { + ...action, + isEligible(item) { + if (item.type === "attachment") { + return true; + } + return action.isEligible?.(item) ?? false; + } + } + ]; + // Media can in some circumstances need a trash option, but + // we need to extend the REST API to support it. See + // https://github.com/WordPress/wordpress-develop/pull/9210. + // Once that is merged we should fix this. + case "move-to-trash": + return [ + { + ...action, + isEligible(item) { + if (item.type === "attachment") { + return false; + } + return action.isEligible?.(item) ?? false; + } + } + ]; + // Skip revisions as the admin does not support it + case "view-post-revisions": + return []; + } + return [action]; + }) + ]; + }, [postTypeActions]); + const handleTabChange = (0, import_element56.useCallback)( + (status) => { + navigate({ + to: `/types/${postType}/list/${status}` + }); + }, + [navigate, postType] + ); + if (!postTypeObject) { + return null; + } + const selection = searchParams.postIds ?? []; + if (view.type === "list" && selection.length === 0 && posts?.length > 0) { + selection.push(posts[0].id.toString()); + } + if (view.type === "list") { + selection.splice(1); + } + return /* @__PURE__ */ React.createElement( + page_default, + { + title: postTypeObject.labels?.name, + subTitle: postTypeObject.labels?.description, + className: `${postTypeObject.name.toLowerCase()}-page`, + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "tertiary", + size: "compact", + onClick: onReset + }, + (0, import_i18n43.__)("Reset view") + ), labels?.add_new_item && canCreateRecord && postType !== "attachment" && /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "primary", + onClick: () => { + navigate({ + to: `/types/${postType}/new` + }); + }, + size: "compact" + }, + labels.add_new_item + )), + hasPadding: false + }, + DEFAULT_VIEWS.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "routes-post-list__tabs-wrapper" }, /* @__PURE__ */ React.createElement( + Tabs, + { + onSelect: handleTabChange, + selectedTabId: slug ?? "all" + }, + /* @__PURE__ */ React.createElement(Tabs.TabList, null, DEFAULT_VIEWS.map( + (filter) => /* @__PURE__ */ React.createElement( + Tabs.Tab, + { + tabId: filter.slug, + key: filter.slug + }, + filter.label + ) + )) + )), + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: posts, + fields, + view, + onChangeView, + actions, + isLoading: isResolving, + paginationInfo: { + totalItems, + totalPages + }, + defaultLayouts: DEFAULT_LAYOUTS, + getItemId, + getItemLevel, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + postIds: items.length > 0 ? items : void 0, + edit: items.length === 0 ? void 0 : searchParams.edit + } + }); + }, + renderItemLink: ({ item, ...props }) => /* @__PURE__ */ React.createElement( + Link, + { + to: `/types/${postType}/edit/${encodeURIComponent( + item.id + )}`, + ...props, + onClick: (event) => { + event.stopPropagation(); + } + } + ) + } + ) + ); +} +var stage = PostList; +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. + *) +*/ diff --git a/src/wp-includes/build/routes/post-list/content.min.asset.php b/src/wp-includes/build/routes/post-list/content.min.asset.php new file mode 100644 index 0000000000000..b59e6331e86e2 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/content.min.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-warning'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '5ee0800d44bd50ce0a4a'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/post-list/content.min.js b/src/wp-includes/build/routes/post-list/content.min.js new file mode 100644 index 0000000000000..df059b5a70dd8 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/content.min.js @@ -0,0 +1,14 @@ +var gh=Object.create;var pc=Object.defineProperty;var hh=Object.getOwnPropertyDescriptor;var bh=Object.getOwnPropertyNames;var xh=Object.getPrototypeOf,_h=Object.prototype.hasOwnProperty;var We=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var wh=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of bh(t))!_h.call(e,n)&&n!==r&&pc(e,n,{get:()=>t[n],enumerable:!(o=hh(t,n))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?gh(xh(e)):{},wh(t||!e||!e.__esModule?pc(r,"default",{value:e,enumerable:!0}):r,e));var z=We((qw,hc)=>{hc.exports=window.wp.element});var Kt=We((Yw,bc)=>{bc.exports=window.wp.data});var As=We((Uw,xc)=>{xc.exports=window.wp.preferences});var Rt=We((ay,_c)=>{_c.exports=window.wp.compose});var me=We((sy,wc)=>{wc.exports=window.React});var R=We((uy,Cc)=>{Cc.exports=window.ReactJSXRuntime});var Lc=We((Dy,Fc)=>{Fc.exports=window.ReactDOM});var jc=We(Bc=>{"use strict";var Fo=me();function Lh(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Bh=typeof Object.is=="function"?Object.is:Lh,jh=Fo.useState,Hh=Fo.useEffect,zh=Fo.useLayoutEffect,Wh=Fo.useDebugValue;function Gh(e,t){var r=t(),o=jh({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return zh(function(){n.value=r,n.getSnapshot=t,Hs(n)&&i({inst:n})},[e,r,t]),Hh(function(){return Hs(n)&&i({inst:n}),e(function(){Hs(n)&&i({inst:n})})},[e]),Wh(r),r}function Hs(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Bh(e,r)}catch{return!0}}function qh(e,t){return t()}var Yh=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?qh:Gh;Bc.useSyncExternalStore=Fo.useSyncExternalStore!==void 0?Fo.useSyncExternalStore:Yh});var zc=We((Fy,Hc)=>{"use strict";Hc.exports=jc()});var X=We((Hy,qc)=>{qc.exports=window.wp.i18n});var Oe=We((zy,Yc)=>{Yc.exports=window.wp.primitives});var El=We((j1,$c)=>{$c.exports=window.wp.privateApis});var $=We((q1,rd)=>{rd.exports=window.wp.components});var Ol=We((Y1,od)=>{od.exports=window.wp.keycodes});var Hm=We((BA,Da)=>{var Lm={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},Bm=Object.keys(Lm).join("|"),t_=new RegExp(Bm,"g"),r_=new RegExp(Bm,"");function o_(e){return Lm[e]}var jm=function(e){return e.replace(t_,o_)},n_=function(e){return!!e.match(r_)};Da.exports=jm;Da.exports.has=n_;Da.exports.remove=jm});var Zm=We((UA,Xm)=>{"use strict";Xm.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,i;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(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Ro=We((mR,Tp)=>{Tp.exports=window.wp.date});var ov=We((ak,rv)=>{rv.exports=window.wp.warning});var lc=We((CF,Jg)=>{Jg.exports=window.wp.coreData});var th=We((EF,eh)=>{eh.exports=window.wp.editor});import{useParams as Tw,useNavigate as Rw,useSearch as kw,Link as Nw,useInvalidate as Dw}from"@wordpress/route";var vc=Object.prototype.hasOwnProperty;function gc(e,t,r){for(r of e.keys())if(Nr(r,t))return r}function Nr(e,t){var r,o,n;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((o=e.length)===t.length)for(;o--&&Nr(e[o],t[o]););return o===-1}if(r===Set){if(e.size!==t.size)return!1;for(o of e)if(n=o,n&&typeof n=="object"&&(n=gc(t,n),!n)||!t.has(n))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(o of e)if(n=o[0],n&&typeof n=="object"&&(n=gc(t,n),!n)||!Nr(o[1],t.get(n)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((o=e.byteLength)===t.byteLength)for(;o--&&e.getInt8(o)===t.getInt8(o););return o===-1}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===t.byteLength)for(;o--&&e[o]===t[o];);return o===-1}if(!r||typeof e=="object"){o=0;for(r in e)if(vc.call(e,r)&&++o&&!vc.call(t,r)||!(r in t)||!Nr(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var _n=c(z(),1),gi=c(Kt(),1),Rs=c(As(),1);function Vs(e,t,r){return`dataviews-${e}-${t}-${r}`}function Ts(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(a=>a.field)),i=(e.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(o={...o,sort:t.sort}),o}function vi(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(i=>i.field));o={...o,filters:(e.filters??[]).filter(i=>!n.has(i.field))}}return t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),o}function yh(e,t){let r={...e};for(let o of t)delete r[o];return r}function ks(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:s}=e,l=Vs(t,r,o),u=(0,gi.useSelect)(w=>w(Rs.store).get("core/views",l),[l]),{set:f}=(0,gi.useDispatch)(Rs.store),d=u??n,m=Number(a?.page??d.page??1),p=a?.search??d.search??"",g=(0,_n.useMemo)(()=>Ts({...d,page:m,search:p},i,n),[d,m,p,i,n]),x=!!u,_=(0,_n.useCallback)(w=>{let E={page:w?.page,search:w?.search},T=vi(yh(w,["page","search"]),i,n);s&&!Nr(E,{page:m,search:p})&&s(E);let I=vi(d,i,n),V=vi(n,i,n);Nr(I,T)||(Nr(T,V)?f("core/views",l,void 0):f("core/views",l,T))},[s,m,p,d,n,i,f,l]),y=(0,_n.useCallback)(()=>{f("core/views",l,void 0)},[l,f]);return{view:g,isModified:x,updateView:_,resetToDefault:y}}var Sh=c(Kt(),1),Ch=c(As(),1);var Pt=c(z(),1),Cs=c(Rt(),1);var Sc=c(me(),1),yc={};function Ns(e,t){let r=Sc.useRef(yc);return r.current===yc&&(r.current=e(t)),r}function Ds(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var bi=c(me(),1);function Ms(e,t,r,o){let n=Ns(Pc).current;return Ph(n,e,t,r,o)&&Oc(n,[e,t,r,o]),n.callback}function Ec(e){let t=Ns(Pc).current;return Oh(t,e)&&Oc(t,e),t.callback}function Pc(){return{callback:null,cleanup:null,refs:[]}}function Ph(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function Oh(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Oc(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{for(let n=0;n=e}function Fs(e){if(!Vc.isValidElement(e))return null;let t=e,r=t.props;return(Ac(19)?r?.ref:t.ref)??null}function wn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Tc(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function Rc(e,t){return typeof e=="function"?e(t):e}function kc(e,t){return typeof e=="function"?e(t):e}var Sn={};function hi(e,t,r,o,n){let i={...Ls(e,Sn)};return t&&(i=yn(i,t)),r&&(i=yn(i,r)),o&&(i=yn(i,o)),n&&(i=yn(i,n)),i}function Nc(e){if(e.length===0)return Sn;if(e.length===1)return Ls(e[0],Sn);let t={...Ls(e[0],Sn)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function Dc(e){return typeof e=="function"}function Ls(e,t){return Dc(e)?e(t):e??Sn}function Th(e,t){return t?e?r=>{if(kh(r)){let n=r;Rh(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function Rh(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Bs(e,t){return t?e?t+" "+e:t:e}function kh(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Nh=Object.freeze([]),Dr=Object.freeze({});var js=c(me(),1);function Mc(e,t,r={}){let o=t.render,n=Dh(t,r);if(r.enabled===!1)return null;let i=r.state??Dr;return Mh(e,o,n,i)}function Dh(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Dr,ref:a,props:s,stateAttributesMapping:l,enabled:u=!0}=t,f=u?Rc(r,i):void 0,d=u?kc(o,i):void 0,m=u?Tc(i,l):Dr,p=u?wn(m,Array.isArray(s)?Nc(s):s)??Dr:Dr;return typeof document<"u"&&(u?Array.isArray(a)?p.ref=Ec([p.ref,Fs(n),...a]):p.ref=Ms(p.ref,Fs(n),a):Ms(null,null)),u?(f!==void 0&&(p.className=Bs(p.className,f)),d!==void 0&&(p.style=wn(p.style,d)),p):Dr}function Mh(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=hi(r,t.props);return n.ref=r.ref,bi.cloneElement(t,n)}if(e&&typeof e=="string")return Fh(e,r);throw new Error(Ds(8))}function Fh(e,t){return e==="button"?(0,js.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,js.createElement)("img",{alt:"",...t,key:t.key}):bi.createElement(e,t)}function Wc(e){return Mc(e.defaultTagName??"div",e,e)}function Gc(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{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,Qi.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});td.displayName="DataViewsContext";var U=td;var _r=c(X(),1);var ho=c(X(),1),Vn=c($(),1),It=c(z(),1),kl=c(Ol(),1);var nd=c($(),1),id=c(X(),1),ad=c(R(),1);function Yr({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),u=n?.getValue?.({item:r})||(0,id.__)("(no title)");return(0,ad.jsx)(nd.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(f=>s!==f):[...e,s])},...a})}var vo=c($(),1),ud=c(X(),1),Bo=c(z(),1);var cd=c(Kt(),1),Il=c(Rt(),1);var sd=c(El(),1),{lock:$1,unlock:J}=(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/dataviews");var he=c(R(),1),{Menu:po,kebabCase:Kh}=J(vo.privateApis);function Qh({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(vo.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function Xh({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,he.jsx)(po.Item,{disabled:e.disabled,onClick:t,children:(0,he.jsx)(po.ItemLabel,{children:o})})}function go({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,he.jsx)(vo.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${Kh(e.id)}`,children:(0,he.jsx)(e.RenderModal,{items:t,closeModal:r})})}function Al({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Bo.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,he.jsx)(Xh,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,he.jsxs)(po.Group,{children:[a(n),n.length>0&&i.length>0&&(0,he.jsx)(po.Separator,{}),a(i)]})}function jo({item:e,actions:t,isCompact:r}){let o=(0,cd.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Bo.useMemo)(()=>{let s=t.filter(u=>!u.isEligible||u.isEligible(e));return{primaryActions:s.filter(u=>u.isPrimary),eligibleActions:s}},[t,e]),a=(0,Il.useViewportMatch)("medium","<");return r?(0,he.jsx)(ld,{item:e,actions:i,isSmall:!0,registry:o}):(0,he.jsxs)(F,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,he.jsx)(Vl,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function Vl({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,Bo.useState)(null);return(0,Il.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,he.jsxs)(he.Fragment,{children:[t.map(s=>(0,he.jsx)(Qh,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,he.jsx)(go,{action:n,items:[e],closeModal:()=>i(null)})]})}var Ho=c($(),1),Xi=c(X(),1),ft=c(z(),1),pd=c(Kt(),1);var Tl=c(Rt(),1);var Ur=c(X(),1);function dd(e,t,r){return e>0?(0,Ur.sprintf)((0,Ur._n)("%d Item selected","%d Items selected",e),e):r>t?(0,Ur.sprintf)((0,Ur._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,Ur.sprintf)((0,Ur._n)("%d Item","%d Items",t),t)}var Ue=c(R(),1);function Zh({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,ft.useState)(!1);return(0,Ue.jsxs)(Ue.Fragment,{children:[(0,Ue.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,Ue.jsx)(go,{action:e,items:t,closeModal:()=>n(!1)})]})}function Zi(e,t){return(0,ft.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function zo(e,t){return(0,ft.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function An({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,ft.useMemo)(()=>r.filter(l=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,Ue.jsx)(Ho.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,Xi.__)("Deselect all"):(0,Xi.__)("Select all")})}function fd({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,Tl.useViewportMatch)("medium","<")?(0,Ue.jsx)(Ho.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,Ue.jsx)(Ho.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var vd=[];function Jh({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,pd.useRegistry)(),i=(0,ft.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,Ue.jsx)(Zh,{action:e,items:i,ActionTriggerComponent:fd},e.id):(0,Ue.jsx)(fd,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function md(e,t,r,o,n,i,a,s,l,u){let f=dd(o.length,e.length,u.totalItems);return(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,Ue.jsx)(An,{selection:o,onChangeSelection:l,data:e,actions:t,getItemId:r}),(0,Ue.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(d=>(0,Ue.jsx)(Jh,{action:d,selectedItems:i,actionInProgress:a,setActionInProgress:s},d.id)),i.length>0&&(0,Ue.jsx)(Ho.Button,{icon:En,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Xi.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{l(vd)}})]})]})}function eb({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,s]=(0,ft.useState)(null),l=(0,ft.useRef)(null),u=(0,Tl.useViewportMatch)("medium","<"),f=(0,ft.useMemo)(()=>t.filter(g=>g.supportsBulk),[t]),d=(0,ft.useMemo)(()=>o.filter(g=>f.some(x=>!x.isEligible||x.isEligible(g))),[o,f]),m=(0,ft.useMemo)(()=>o.filter(g=>e.includes(n(g))&&d.includes(g)),[e,o,n,d]),p=(0,ft.useMemo)(()=>t.filter(g=>g.supportsBulk&&(!u||g.icon)&&m.some(x=>!g.isEligible||g.isEligible(x))),[t,m,u]);if(a)l.current||(l.current=md(o,t,n,e,p,m,a,s,r,i));else return l.current&&(l.current=null),md(o,t,n,e,p,m,a,s,r,i);return l.current}function Ji(){let{data:e,selection:t,actions:r=vd,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,ft.useContext)(U);return(0,Ue.jsx)(eb,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var hr=c(X(),1);var br=c($(),1),$r=c(z(),1);function ea(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var te=c(R(),1),{Menu:pe}=J(br.privateApis);function tb({children:e}){return $r.Children.toArray(e).filter(Boolean).map((t,r)=>(0,te.jsxs)($r.Fragment,{children:[r>0&&(0,te.jsx)(pe.Separator,{}),t]},r))}var rb=(0,$r.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:u=!0},f){let d=r.fields??[],m=d?.indexOf(t),p=r.sort?.field===t,g=!1,x=!1,_=!1,y=[],w=o.find(C=>C.id===t),{setIsShowingFilter:E}=(0,$r.useContext)(U);if(!w)return null;g=w.enableHiding!==!1,x=w.enableSorting!==!1;let T=w.header;if(y=!!w.filterBy&&w.filterBy?.operators||[],_=!r.filters?.some(C=>t===C.field)&&!!(w.hasElements||w.Edit)&&w.filterBy!==!1&&!w.filterBy?.isPrimary,!x&&!s&&!g&&!_)return T;let I=ea(r,o).filter(C=>!d.includes(C.id)),V=(l||u)&&!!I.length,D=(0,hr.isRTL)();return(0,te.jsxs)(pe,{children:[(0,te.jsxs)(pe.TriggerButton,{render:(0,te.jsx)(br.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[T,r.sort&&p&&(0,te.jsx)("span",{"aria-hidden":"true",children:Kc[r.sort.direction]})]}),(0,te.jsx)(pe.Popover,{style:{minWidth:"240px"},children:(0,te.jsxs)(tb,{children:[x&&(0,te.jsx)(pe.Group,{children:Yi.map(C=>{let S=r.sort&&p&&r.sort.direction===C,k=`${t}-${C}`;return(0,te.jsx)(pe.RadioItem,{name:"view-table-sorting",value:k,checked:S,onChange:()=>{n({...r,sort:{field:t,direction:C},showLevels:!1})},children:(0,te.jsx)(pe.ItemLabel,{children:$i[C]})},k)})}),_&&(0,te.jsx)(pe.Group,{children:(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(br.Icon,{icon:Pn}),onClick:()=>{a(t),E(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:y[0]}]})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Add filter")})})}),(s||g||V)&&w&&(0,te.jsxs)(pe.Group,{children:[s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(br.Icon,{icon:qs}),disabled:D?m>=d.length-1:m<1,onClick:()=>{let C=D?m+1:m-1,S=[...d];S.splice(m,1),S.splice(C,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Move left")})}),s&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(br.Icon,{icon:Us}),disabled:D?m<1:m>=d.length-1,onClick:()=>{let C=D?m-1:m+1,S=[...d];S.splice(m,1),S.splice(C,0,t),n({...r,fields:S})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Move right")})}),l&&!!I.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Insert left")})}),(0,te.jsx)(pe.Popover,{children:I.map(C=>{let S=D?m+1:m;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),C.id,...d.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:C.label})},C.id)})})]}),u&&!!I.length&&(0,te.jsxs)(pe,{children:[(0,te.jsx)(pe.SubmenuTriggerItem,{children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Insert right")})}),(0,te.jsx)(pe.Popover,{children:I.map(C=>{let S=D?m:m+1;return(0,te.jsx)(pe.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),C.id,...d.slice(S)]})},children:(0,te.jsx)(pe.ItemLabel,{children:C.label})},C.id)})})]}),g&&w&&(0,te.jsx)(pe.Item,{prefix:(0,te.jsx)(br.Icon,{icon:In}),onClick:()=>{i(w),n({...r,fields:d.filter(C=>C!==t)})},children:(0,te.jsx)(pe.ItemLabel,{children:(0,hr.__)("Hide column")})})]})]})})]})}),ob=rb,Wo=ob;var gd=c(z(),1),Rl=c(R(),1);function nb({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function Kr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,Rl.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,gd.cloneElement)(l,{onClick:u=>{u.stopPropagation(),l.props.onClick&&l.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(u))}})}let s=nb({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,Rl.jsx)("div",{...s,...a,children:i})}var Jt=c(R(),1);function ib({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,Jt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Jt.jsx)(Kr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,Jt.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,Jt.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Jt.jsxs)(Kr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,Jt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,Jt.jsx)(r.render,{item:e,field:r})]}),n&&(0,Jt.jsx)(n.render,{item:e,field:n})]})]})}var ta=ib;var hd=c(Rt(),1),Go=c(z(),1),bd=c(X(),1),ab=e=>(0,bd.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function xd({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Go.useState)(!1),n=(0,hd.useDebounce)((0,Go.useCallback)(()=>{let i=e.current;i&&o(ab(i))},[e,o]),200);return(0,Go.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function Lt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Qr=c($(),1),wd=c(X(),1),yd=c(z(),1);var kt=c(R(),1);function _d({field:e,isVisible:t,onToggleVisibility:r}){return(0,kt.jsx)(Qr.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,kt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,kt.jsx)("div",{style:{height:24,width:24},children:t&&(0,kt.jsx)(Qr.Icon,{icon:Cn})}),(0,kt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function sb(e){return!!e}function ra({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,yd.useContext)(U),n=ea(t,r);if(!n?.length)return null;let i=r.find(g=>g.id===t.titleField),a=r.find(g=>g.id===t.mediaField),s=r.find(g=>g.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:g})=>sb(g)),u=t.fields??[],f=n.filter(g=>u.includes(g.id)).length,d=l.filter(({isVisibleFlag:g})=>t[g]??!0),m=d.length+f,p=m===1&&d.length===1;return(0,kt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[e&&(0,kt.jsx)(Qr.BaseControl.VisualLabel,{children:(0,wd.__)("Properties")}),(0,kt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,kt.jsxs)(Qr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:g,isVisibleFlag:x})=>{let _=t[x]??!0,y=p&&_?{...g,enableHiding:!1}:g;return(0,kt.jsx)(_d,{field:y,isVisible:_,onToggleVisibility:()=>{o({...t,[x]:!_})}},g.id)}),n.map(g=>{let x=u.includes(g.id),_=m===1&&x?{...g,enableHiding:!1}:g;return(0,kt.jsx)(_d,{field:_,isVisible:x,onToggleVisibility:()=>{o({...t,fields:x?u.filter(y=>y!==g.id):[...u,g.id]})}},g.id)})]})})]})}var Q=c(R(),1);function lb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,Q.jsx)("div",{className:i,children:(0,Q.jsx)(n.render,{item:e,field:n})})}function Sd({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:u,selection:f,getItemId:d,isItemClickable:m,onClickItem:p,renderItemLink:g,onChangeSelection:x,isActionsColumnSticky:_,posinset:y}){let{paginationInfo:w}=(0,It.useContext)(U),E=Zi(o,t),T=E&&f.includes(i),{showTitle:I=!0,showMedia:V=!0,showDescription:D=!0,infiniteScrollEnabled:C}=a,S=(0,It.useRef)(!1),k=a.fields??[],M=s&&I||l&&V||u&&D;return(0,Q.jsxs)("tr",{className:Y("dataviews-view-table__row",{"is-selected":E&&T,"has-bulk-actions":E}),onTouchStart:()=>{S.current=!0},"aria-setsize":C?w.totalItems:void 0,"aria-posinset":y,role:C?"article":void 0,onMouseDown:A=>{let v=(0,kl.isAppleOS)()?A.metaKey:A.ctrlKey;A.button===0&&v&&window.navigator.userAgent.toLowerCase().includes("firefox")&&A?.preventDefault()},onClick:A=>{if(!E)return;((0,kl.isAppleOS)()?A.metaKey:A.ctrlKey)&&!S.current&&document.getSelection()?.type!=="Range"&&x(f.includes(i)?f.filter(h=>i!==h):[...f,i])},children:[e&&(0,Q.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,Q.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,Q.jsx)(Yr,{item:t,selection:f,onChangeSelection:x,getItemId:d,titleField:s,disabled:!E})})}),M&&(0,Q.jsx)("td",{children:(0,Q.jsx)(ta,{item:t,level:r,titleField:I?s:void 0,mediaField:V?l:void 0,descriptionField:D?u:void 0,isItemClickable:m,onClickItem:p,renderItemLink:g})}),k.map(A=>{let{width:v,maxWidth:h,minWidth:O,align:b}=a.layout?.styles?.[A]??{};return(0,Q.jsx)("td",{style:{width:v,maxWidth:h,minWidth:O},children:(0,Q.jsx)(lb,{fields:n,item:t,column:A,align:b})},A)}),!!o?.length&&(0,Q.jsx)("td",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":_}),onClick:A=>A.stopPropagation(),children:(0,Q.jsx)(jo,{item:t,actions:o})})]})}function ub({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:u,onClickItem:f,isItemClickable:d,renderItemLink:m,view:p,className:g,empty:x}){let{containerRef:_}=(0,It.useContext)(U),y=(0,It.useRef)(new Map),w=(0,It.useRef)(),[E,T]=(0,It.useState)(),I=zo(e,t),[V,D]=(0,It.useState)(null);(0,It.useEffect)(()=>{w.current&&(w.current.focus(),w.current=void 0)});let C=(0,It.useId)(),S=xd({scrollContainerRef:_,enabled:!!e?.length});if(E){w.current=E,T(void 0);return}let k=q=>{let Ve=y.current.get(q.id),Ze=Ve?y.current.get(Ve.fallback):void 0;T(Ze?.node)},M=q=>{q.preventDefault(),q.stopPropagation();let Ve={getBoundingClientRect:()=>({x:q.clientX,y:q.clientY,top:q.clientY,left:q.clientX,right:q.clientX,bottom:q.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{D(Ve)})},A=!!t?.length,v=r.find(q=>q.id===p.titleField),h=r.find(q=>q.id===p.mediaField),O=r.find(q=>q.id===p.descriptionField),b=p.groupBy?.field?r.find(q=>q.id===p.groupBy?.field):null,N=b?Lt(t,b):null,{showTitle:j=!0,showMedia:P=!0,showDescription:G=!0}=p,K=v&&j||h&&P||O&&G,Xe=p.fields??[],rt=(q,Ve)=>Ze=>{Ze?y.current.set(q,{node:Ze,fallback:Xe[Ve>0?Ve-1:1]}):y.current.delete(q)},fe=p.infiniteScrollEnabled&&!N,Pe=(0,ho.isRTL)();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)("table",{className:Y("dataviews-view-table",g,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":I}),"aria-busy":i,"aria-describedby":C,role:fe?"feed":void 0,children:[(0,Q.jsxs)("colgroup",{children:[I&&(0,Q.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),K&&(0,Q.jsx)("col",{className:"dataviews-view-table__col-first-data"}),Xe.map((q,Ve)=>(0,Q.jsx)("col",{className:Y(`dataviews-view-table__col-${q}`,{"dataviews-view-table__col-first-data":!K&&Ve===0})},`col-${q}`)),!!e?.length&&(0,Q.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),V&&(0,Q.jsx)(Vn.Popover,{anchor:V,onClose:()=>D(null),placement:"bottom-start",children:(0,Q.jsx)(ra,{showLabel:!1})}),(0,Q.jsx)("thead",{onContextMenu:M,children:(0,Q.jsxs)("tr",{className:"dataviews-view-table__row",children:[I&&(0,Q.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:M,children:(0,Q.jsx)(An,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),K&&(0,Q.jsx)("th",{scope:"col",children:v&&(0,Q.jsx)(Wo,{ref:rt(v.id,0),fieldId:v.id,view:p,fields:r,onChangeView:a,onHide:k,setOpenedFilter:u,canMove:!1,canInsertLeft:Pe?p.layout?.enableMoving??!0:!1,canInsertRight:Pe?!1:p.layout?.enableMoving??!0})}),Xe.map((q,Ve)=>{let{width:Ze,maxWidth:qt,minWidth:kr,align:Mo}=p.layout?.styles?.[q]??{},fo=p.layout?.enableMoving??!0;return(0,Q.jsx)("th",{style:{width:Ze,maxWidth:qt,minWidth:kr,textAlign:Mo},"aria-sort":p.sort?.direction&&p.sort?.field===q?Ui[p.sort.direction]:void 0,scope:"col",children:(0,Q.jsx)(Wo,{ref:rt(q,Ve),fieldId:q,view:p,fields:r,onChangeView:a,onHide:k,setOpenedFilter:u,canMove:fo,canInsertLeft:fo,canInsertRight:fo})},q)}),!!e?.length&&(0,Q.jsx)("th",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!S}),children:(0,Q.jsx)("span",{className:"dataviews-view-table-header",children:(0,ho.__)("Actions")})})]})}),A&&b&&N?Array.from(N.entries()).map(([q,Ve])=>(0,Q.jsxs)("tbody",{children:[(0,Q.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,Q.jsx)("td",{colSpan:Xe.length+(K?1:0)+(I?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?q:(0,ho.sprintf)((0,ho.__)("%1$s: %2$s"),b.label,q)})}),Ve.map((Ze,qt)=>(0,Q.jsx)(Sd,{item:Ze,level:p.showLevels&&typeof n=="function"?n(Ze):void 0,hasBulkActions:I,actions:e,fields:r,id:o(Ze)||qt.toString(),view:p,titleField:v,mediaField:h,descriptionField:O,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S},o(Ze)))]},`group-${q}`)):(0,Q.jsx)("tbody",{children:A&&t.map((q,Ve)=>(0,Q.jsx)(Sd,{item:q,level:p.showLevels&&typeof n=="function"?n(q):void 0,hasBulkActions:I,actions:e,fields:r,id:o(q)||Ve.toString(),view:p,titleField:v,mediaField:h,descriptionField:O,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S,posinset:fe?Ve+1:void 0},o(q)))})]}),(0,Q.jsxs)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!A&&!i}),id:C,children:[!A&&(i?(0,Q.jsx)("p",{children:(0,Q.jsx)(Vn.Spinner,{})}):x),A&&i&&(0,Q.jsx)("p",{className:"dataviews-loading-more",children:(0,Q.jsx)(Vn.Spinner,{})})]})]})}var Cd=ub;var Dl=c($(),1),ia=c(X(),1);var Nt=c($(),1);var Tn=c(X(),1),Pd=c(Rt(),1),Od=c(Ol(),1),na=c(z(),1);var cb=c($(),1),db=c(X(),1),oa=c(z(),1);var fb=c(R(),1),mb=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],pb=mb[2].value;function Ed(){let e=(0,oa.useContext)(U),t=e.view;return(0,oa.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??pb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ue=c(R(),1),{Badge:vb}=J(Nt.privateApis);function gb(e,t){let r=[];for(let o=0,n=e.length;o{if(y.onClickCapture?.(b),(0,Od.isAppleOS)()?b.metaKey:b.ctrlKey){if(b.stopPropagation(),b.preventDefault(),!V)return;o(r.includes(D)?r.filter(N=>D!==N):[...r,D])}},children:[(0,ue.jsx)(Kr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:Y("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!M}),...h,children:A}),x&&(0,ue.jsx)(Yr,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:d,disabled:!V}),!!u?.length&&(0,ue.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ue.jsx)(jo,{item:l,actions:u,isCompact:!0})}),E&&(0,ue.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ue.jsx)(Kr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...O,title:d?.getValueFormatted({item:l,field:d})||void 0,children:v})}),(0,ue.jsxs)(F,{direction:"column",gap:"xs",children:[I&&m?.render&&(0,ue.jsx)(m.render,{item:l,field:m}),!!g?.length&&(0,ue.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:g.map(b=>(0,ue.jsx)(vb,{className:"dataviews-view-grid__field-value",children:(0,ue.jsx)(b.render,{item:l,field:b})},b.id))}),!!p?.length&&(0,ue.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(b=>(0,ue.jsx)(Nt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)(Nt.Tooltip,{text:b.label,children:(0,ue.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-name",children:b.header})}),(0,ue.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ue.jsx)(b.render,{item:l,field:b})})]})},b.id))})]})]})});function Nl({data:e,isInfiniteScroll:t,className:r,isLoading:o,view:n,fields:i,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:f,getItemId:d,actions:m}){let{paginationInfo:p,resizeObserverRef:g}=(0,na.useContext)(U),x=Ed(),_=zo(m,e),y=i.find(S=>S.id===n?.titleField),w=i.find(S=>S.id===n?.mediaField),E=i.find(S=>S.id===n?.descriptionField),T=n.fields??[],{regularFields:I,badgeFields:V}=T.reduce((S,k)=>{let M=i.find(v=>v.id===k);if(!M)return S;let A=n.layout?.badgeFields?.includes(k)?"badgeFields":"regularFields";return S[A].push(M),S},{regularFields:[],badgeFields:[]}),D="900px",C=Math.ceil(e.length/x);return(0,ue.jsx)(Nt.Composite,{role:t?"feed":"grid",className:Y("dataviews-view-grid",r),focusWrap:!0,"aria-busy":o,"aria-rowcount":t?void 0:C,ref:g,children:gb(e,x).map((S,k)=>(0,ue.jsx)(Nt.Composite.Row,{render:(0,ue.jsx)("div",{role:"row","aria-rowindex":k+1,"aria-label":(0,Tn.sprintf)((0,Tn.__)("Row %d"),k+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${x}, minmax(0, 1fr) )`}}),children:S.map((M,A)=>{let v=k*x+A;return(0,ue.jsx)(Nt.Composite.Item,{render:h=>(0,ue.jsx)(hb,{...h,role:t?"article":"gridcell","aria-setsize":t?p.totalItems:void 0,"aria-posinset":t?v+1:void 0,view:n,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:u,renderItemLink:f,getItemId:d,item:M,actions:m,mediaField:w,titleField:y,descriptionField:E,regularFields:I,badgeFields:V,hasBulkActions:_,config:{sizes:D}})},d(M))})},k))})}var xt=c(R(),1);function bb({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:u,view:f,className:d,empty:m}){let p=!!t?.length,g=f.groupBy?.field?r.find(w=>w.id===f.groupBy?.field):null,x=g?Lt(t,g):null,_=f.infiniteScrollEnabled&&!x,y={className:d,isLoading:n,view:f,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,xt.jsxs)(xt.Fragment,{children:[p&&g&&x&&(0,xt.jsx)(F,{direction:"column",gap:"lg",children:Array.from(x.entries()).map(([w,E])=>(0,xt.jsxs)(F,{direction:"column",gap:"sm",children:[(0,xt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?w:(0,ia.sprintf)((0,ia.__)("%1$s: %2$s"),g.label,w)}),(0,xt.jsx)(Nl,{...y,data:E,isInfiniteScroll:!1})]},w))}),p&&!x&&(0,xt.jsx)(Nl,{...y,data:t,isInfiniteScroll:!!_}),!p&&(0,xt.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,xt.jsx)("p",{children:(0,xt.jsx)(Dl.Spinner,{})}):m}),p&&n&&(0,xt.jsx)("p",{className:"dataviews-loading-more",children:(0,xt.jsx)(Dl.Spinner,{})})]})}var Id=bb;var aa=c(Rt(),1),$e=c($(),1),Ge=c(z(),1),Rn=c(X(),1);var Bl=c(Kt(),1);var W=c(R(),1),{Menu:Ml}=J($e.privateApis);function Fl(e){return`${e}-item-wrapper`}function xb(e,t){return`${e}-primary-action-${t}`}function Ll(e){return`${e}-dropdown`}function _b({idPrefix:e,primaryAction:t,item:r}){let o=(0,Bl.useRegistry)(),[n,i]=(0,Ge.useState)(!1),a=xb(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:a,render:(0,W.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,W.jsx)(go,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:a,render:(0,W.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function Ad({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:u,onDropdownTriggerKeyDown:f,posinset:d}){let{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:x}=e,_=(0,Ge.useRef)(null),y=`${r}-label`,w=`${r}-description`,E=(0,Bl.useRegistry)(),[T,I]=(0,Ge.useState)(!1),[V,D]=(0,Ge.useState)(null),C=({type:b})=>{I(b==="mouseenter")},{paginationInfo:S}=(0,Ge.useContext)(U);(0,Ge.useEffect)(()=>{o&&_.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:k,eligibleActions:M}=(0,Ge.useMemo)(()=>{let b=t.filter(j=>!j.isEligible||j.isEligible(n));return{primaryAction:b.filter(j=>j.isPrimary)[0],eligibleActions:b}},[t,n]),A=k&&t.length===1,v=p&&a?.render?(0,W.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,W.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,h=m&&i?.render?(0,W.jsx)(i.render,{item:n,field:i}):null,O=M?.length>0&&(0,W.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[k&&(0,W.jsx)(_b,{idPrefix:r,primaryAction:k,item:n}),!A&&(0,W.jsxs)("div",{role:"gridcell",children:[(0,W.jsxs)(Ml,{placement:"bottom-end",children:[(0,W.jsx)(Ml.TriggerButton,{render:(0,W.jsx)($e.Composite.Item,{id:Ll(r),render:(0,W.jsx)($e.Button,{size:"small",icon:On,label:(0,Rn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:f})})}),(0,W.jsx)(Ml.Popover,{children:(0,W.jsx)(Al,{actions:M,item:n,registry:E,setActiveModalAction:D})})]}),!!V&&(0,W.jsx)(go,{action:V,items:[n],closeModal:()=>D(null)})]})]});return(0,W.jsx)($e.Composite.Row,{ref:_,render:(0,W.jsx)("div",{"aria-posinset":d,"aria-setsize":x?S.totalItems:void 0}),role:x?"article":"row",className:Y({"is-selected":o,"is-hovered":T}),onMouseEnter:C,onMouseLeave:C,children:(0,W.jsxs)(F,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:Fl(r),"aria-pressed":o,"aria-labelledby":y,"aria-describedby":w,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,W.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[v,(0,W.jsxs)(F,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,W.jsxs)(F,{direction:"row",align:"center",children:[(0,W.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:y,children:h}),O]}),g&&s?.render&&(0,W.jsx)("div",{className:"dataviews-view-list__field",children:(0,W.jsx)(s.render,{item:n,field:s})}),(0,W.jsx)("div",{className:"dataviews-view-list__fields",id:w,children:u.map(b=>(0,W.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,W.jsx)($e.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:b.label}),(0,W.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,W.jsx)(b.render,{item:n,field:b})})]},b.id))})]})]})]})})}function wb(e){return!!e}function jl(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:u,empty:f}=e,d=(0,aa.useInstanceId)(jl,"view-list"),m=r?.findLast(h=>s.includes(n(h))),p=o.find(h=>h.id===l.titleField),g=o.find(h=>h.id===l.mediaField),x=o.find(h=>h.id===l.descriptionField),_=(l?.fields??[]).map(h=>o.find(O=>h===O.id)).filter(wb),y=h=>a([n(h)]),w=(0,Ge.useCallback)(h=>`${d}-${n(h)}`,[d,n]),E=(0,Ge.useCallback)((h,O)=>O.startsWith(w(h)),[w]),[T,I]=(0,Ge.useState)(void 0);(0,Ge.useEffect)(()=>{m&&I(Fl(w(m)))},[m,w]);let V=r.findIndex(h=>E(h,T??"")),D=(0,aa.usePrevious)(V),C=V!==-1,S=(0,Ge.useCallback)((h,O)=>{let b=Math.min(r.length-1,Math.max(0,h));if(!r[b])return;let N=w(r[b]),j=O(N);I(j),document.getElementById(j)?.focus()},[r,w]);(0,Ge.useEffect)(()=>{!C&&(D!==void 0&&D!==-1)&&S(D,Fl)},[C,S,D]);let k=(0,Ge.useCallback)(h=>{h.key==="ArrowDown"&&(h.preventDefault(),S(V+1,Ll)),h.key==="ArrowUp"&&(h.preventDefault(),S(V-1,Ll))},[S,V]),M=r?.length;if(!M)return(0,W.jsx)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!M&&!i}),children:!M&&(i?(0,W.jsx)("p",{children:(0,W.jsx)($e.Spinner,{})}):f)});let A=l.groupBy?.field?o.find(h=>h.id===l.groupBy?.field):null,v=A?Lt(r,A):null;return M&&A&&v?(0,W.jsx)($e.Composite,{id:`${d}`,render:(0,W.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:T,setActiveId:I,children:(0,W.jsx)(F,{direction:"column",gap:"lg",className:Y("dataviews-view-list",u),children:Array.from(v.entries()).map(([h,O])=>(0,W.jsxs)(F,{direction:"column",gap:"sm",children:[(0,W.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?h:(0,Rn.sprintf)((0,Rn.__)("%1$s: %2$s"),A.label,h)}),O.map(b=>{let N=w(b);return(0,W.jsx)(Ad,{view:l,idPrefix:N,actions:t,item:b,isSelected:b===m,onSelect:y,mediaField:g,titleField:p,descriptionField:x,otherFields:_,onDropdownTriggerKeyDown:k},N)})]},h))})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)($e.Composite,{id:d,render:(0,W.jsx)("div",{}),className:Y("dataviews-view-list",u,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density)}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:T,setActiveId:I,children:r.map((h,O)=>{let b=w(h);return(0,W.jsx)(Ad,{view:l,idPrefix:b,actions:t,item:h,isSelected:h===m,onSelect:y,mediaField:g,titleField:p,descriptionField:x,otherFields:_,onDropdownTriggerKeyDown:k,posinset:l.infiniteScrollEnabled?O+1:void 0},b)})}),M&&i&&(0,W.jsx)("p",{className:"dataviews-loading-more",children:(0,W.jsx)($e.Spinner,{})})]})}var zl=c($(),1);var sa=c(X(),1),Vd=c(z(),1);var qo=c(R(),1);function Td({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Vd.createInterpolateElement)((0,sa.sprintf)((0,sa.__)("%s: "),r.label).trim(),{groupName:(0,qo.jsx)(r.render,{item:t[0],field:r})}):(0,qo.jsx)(r.render,{item:t[0],field:r});return(0,qo.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,qo.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var Rd=c($(),1),bo=c(z(),1),kd=c(Kt(),1),Nd=c(Rt(),1);var Be=c(R(),1);function yb(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:u,renderItemLink:f,isItemClickable:d}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:x}=t,_=(0,bo.useRef)(null),y=(0,kd.useRegistry)(),{paginationInfo:w}=(0,bo.useContext)(U),{primaryActions:E,eligibleActions:T}=(0,bo.useMemo)(()=>{let M=r.filter(v=>!v.isEligible||v.isEligible(o));return{primaryActions:M.filter(v=>v.isPrimary),eligibleActions:M}},[r,o]),I=(0,Nd.useViewportMatch)("medium","<"),V=t.layout?.density??"balanced",D=p&&V!=="compact"&&i?.render?(0,Be.jsx)(i.render,{item:o,field:i,config:{sizes:V==="comfortable"?"32px":"24px"}}):null,C=(0,Be.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,Be.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),S=m&&n?.render?(0,Be.jsx)(n.render,{item:o,field:n}):null,k=(0,bo.useMemo)(()=>V==="comfortable"?"md":"sm",[V]);return(0,Be.jsx)("div",{ref:_,role:x?"article":void 0,"aria-posinset":l,"aria-setsize":x?w.totalItems:void 0,className:Y("dataviews-view-activity__item",V==="compact"&&"is-compact",V==="balanced"&&"is-balanced",V==="comfortable"&&"is-comfortable"),children:(0,Be.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,Be.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:C}),(0,Be.jsxs)(F,{direction:"column",gap:k,align:"flex-start",className:"dataviews-view-activity__item-content",children:[S&&(0,Be.jsx)(Kr,{item:o,isItemClickable:d,onClickItem:u,renderItemLink:f,className:"dataviews-view-activity__item-title",children:S}),g&&a&&(0,Be.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,Be.jsx)(a.render,{item:o,field:a})}),(0,Be.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(M=>(0,Be.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,Be.jsx)(Rd.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:M.label}),(0,Be.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,Be.jsx)(M.render,{item:o,field:M})})]},M.id))}),!!E?.length&&(0,Be.jsx)(Vl,{item:o,actions:E,registry:y,buttonVariant:"secondary"})]}),(E.length0)&&(0,Be.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,Be.jsx)(jo,{item:o,actions:T,isCompact:!0})})]})})}var Dd=yb;var Md=c(me(),1);function Sb(e){return!!e}function Hl(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),s=r.find(u=>u.id===n.descriptionField),l=(n?.fields??[]).map(u=>r.find(f=>u===f.id)).filter(Sb);return t.map((u,f)=>(0,Md.createElement)(Dd,{...e,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var _t=c(R(),1);function Fd(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=r?.length;if(!s)return(0,_t.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!s&&!n}),children:!s&&(n?(0,_t.jsx)("p",{children:(0,_t.jsx)(zl.Spinner,{})}):t)});let l=Y("dataviews-view-activity",a),u=i.groupBy?.field?o.find(m=>m.id===i.groupBy?.field):null,f=u?Lt(r,u):null,d=f?Array.from(f.entries()):[];return s&&u&&f?(0,_t.jsx)(F,{direction:"column",gap:"sm",className:l,children:d.map(([m,p])=>(0,_t.jsx)(Td,{groupName:m,groupData:p,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,_t.jsx)(Hl,{...e,data:p})},m))}):(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsx)("div",{className:l,role:i.infiniteScrollEnabled?"feed":void 0,children:(0,_t.jsx)(Hl,{...e})}),s&&n&&(0,_t.jsx)("p",{className:"dataviews-loading-more",children:(0,_t.jsx)(zl.Spinner,{})})]})}var At=c($(),1),Nn=c(X(),1),Gd=c(Rt(),1),qd=c(z(),1);var Bd=c($(),1),Cb=c(Kt(),1),la=c(z(),1);var Eb=c(X(),1);var kn=c($(),1),Yo=c(z(),1),Dt=c(X(),1);var xr=c(R(),1);function Wl(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Yo.useContext)(U);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Dt.sprintf)((0,Dt.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,xr.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,xr.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,Yo.createInterpolateElement)((0,Dt.sprintf)((0,Dt._x)("
      Page
      %1$s
      of %2$d
      ","paging"),"",o),{div:(0,xr.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,xr.jsx)(kn.SelectControl,{"aria-label":(0,Dt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,xr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,xr.jsx)(kn.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Dt.__)("Previous page"),icon:(0,Dt.isRTL)()?Bi:Hi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,xr.jsx)(kn.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Dt.__)("Next page"),icon:(0,Dt.isRTL)()?Hi:Bi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var Ld=(0,Yo.memo)(Wl);var jd=c(R(),1);function ua(e){return(0,la.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var Hd=c(z(),1);var zd=c(R(),1),Gl=(0,Hd.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,zd.jsx)("div",{ref:o,className:Y("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var ee=c(R(),1),{Badge:Pb}=J(At.privateApis);function Wd({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:u,badgeFields:f,config:d,posinset:m,setsize:p}){let{showTitle:g=!0,showMedia:x=!0,showDescription:_=!0}=e,y=n(i),w=r.includes(y),E=a?.render?(0,ee.jsx)(a.render,{item:i,field:a,config:d}):null,T=g&&s?.render?(0,ee.jsx)(s.render,{item:i,field:s}):null;return(0,ee.jsxs)(At.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,Nn.__)("(no title)"):void 0,render:({children:I,...V})=>(0,ee.jsx)(F,{direction:"column",children:I,...V}),role:"option","aria-posinset":m,"aria-setsize":p,className:Y("dataviews-view-picker-grid__card",{"is-selected":w}),"aria-selected":w,onClick:()=>{if(w)o(r.filter(I=>y!==I));else{let I=t?[...r,y]:[y];o(I)}},children:[x&&E&&(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__media",children:E}),x&&E&&(0,ee.jsx)(Yr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),g&&(0,ee.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:T})}),(0,ee.jsxs)(F,{direction:"column",gap:"xs",children:[_&&l?.render&&(0,ee.jsx)(l.render,{item:i,field:l}),!!f?.length&&(0,ee.jsx)(F,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:f.map(I=>(0,ee.jsx)(Pb,{className:"dataviews-view-picker-grid__field-value",children:(0,ee.jsx)(I.render,{item:i,field:I})},I.id))}),!!u?.length&&(0,ee.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(I=>(0,ee.jsx)(At.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(At.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:I.header}),(0,ee.jsx)(At.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,ee.jsx)(I.render,{item:i,field:I})})]})},I.id))})]})]},y)}function Yd({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,Gd.useInstanceId)(Yd,"dataviews-view-picker-grid-group__header");return(0,ee.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,ee.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Nn.sprintf)((0,Nn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function Ob({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:u}){let{resizeObserverRef:f,paginationInfo:d,itemListLabel:m}=(0,qd.useContext)(U),p=r.find(v=>v.id===s?.titleField),g=r.find(v=>v.id===s?.mediaField),x=r.find(v=>v.id===s?.descriptionField),_=s.fields??[],{regularFields:y,badgeFields:w}=_.reduce((v,h)=>{let O=r.find(N=>N.id===h);if(!O)return v;let b=s.layout?.badgeFields?.includes(h)?"badgeFields":"regularFields";return v[b].push(O),v},{regularFields:[],badgeFields:[]}),E=!!t?.length,T=s.layout?.previewSize,I=ua(e),V="900px",D=s.groupBy?.field?r.find(v=>v.id===s.groupBy?.field):null,C=D?Lt(t,D):null,S=s.infiniteScrollEnabled&&!C,k=s?.page??1,M=s?.perPage??0,A=S?d?.totalItems:void 0;return(0,ee.jsxs)(ee.Fragment,{children:[E&&D&&C&&(0,ee.jsx)(At.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,className:Y("dataviews-view-picker-grid",l),"aria-label":m,render:({children:v,...h})=>(0,ee.jsx)(F,{direction:"column",gap:"lg",children:v,...h}),children:Array.from(C.entries()).map(([v,h])=>(0,ee.jsx)(Yd,{groupName:v,groupField:D,showLabel:s.groupBy?.showLabel!==!1,children:(0,ee.jsx)(Gl,{previewSize:T,style:{gridTemplateColumns:T&&`repeat(auto-fill, minmax(${T}px, 1fr))`},"aria-busy":n,ref:f,children:h.map(O=>{let b=(k-1)*M+t.indexOf(O)+1;return(0,ee.jsx)(Wd,{view:s,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:O,mediaField:g,titleField:p,descriptionField:x,regularFields:y,badgeFields:w,config:{sizes:V},posinset:b,setsize:A},o(O))})})},v))}),E&&!C&&(0,ee.jsx)(At.Composite,{render:(0,ee.jsx)(Gl,{className:Y("dataviews-view-picker-grid",l),previewSize:T,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,"aria-label":m,children:t.map((v,h)=>{let O=S?h+1:void 0;return S||(O=(k-1)*M+h+1),(0,ee.jsx)(Wd,{view:s,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:v,mediaField:g,titleField:p,descriptionField:x,regularFields:y,badgeFields:w,config:{sizes:V},posinset:O,setsize:A},o(v))})}),!E&&(0,ee.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,ee.jsx)("p",{children:(0,ee.jsx)(At.Spinner,{})}):u}),E&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(At.Spinner,{})})]})}var Ud=Ob;var ca=c(X(),1),xo=c($(),1),Bt=c(z(),1);var re=c(R(),1);function Ib({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,re.jsx)("div",{className:i,children:(0,re.jsx)(n.render,{item:e,field:n})})}function $d({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:u,multiselect:f,posinset:d}){let{paginationInfo:m}=(0,Bt.useContext)(U),p=s.includes(r),[g,x]=(0,Bt.useState)(!1),{showTitle:_=!0,showMedia:y=!0,showDescription:w=!0,infiniteScrollEnabled:E}=o,T=()=>{x(!0)},I=()=>{x(!1)},V=o.fields??[],D=n&&_||i&&y||a&&w;return(0,re.jsxs)(xo.Composite.Item,{render:({children:C,...S})=>(0,re.jsx)("tr",{className:Y("dataviews-view-table__row",{"is-selected":p,"is-hovered":g}),onMouseEnter:T,onMouseLeave:I,children:C,...S}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":d,role:E?"article":"option",onClick:()=>{if(p)u(s.filter(C=>r!==C));else{let C=f?[...s,r]:[r];u(C)}},children:[(0,re.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,re.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,re.jsx)(Yr,{item:e,selection:s,onChangeSelection:u,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,re.jsx)("td",{role:"presentation",children:(0,re.jsx)(ta,{item:e,titleField:_?n:void 0,mediaField:y?i:void 0,descriptionField:w?a:void 0,isItemClickable:()=>!1})}),V.map(C=>{let{width:S,maxWidth:k,minWidth:M,align:A}=o.layout?.styles?.[C]??{};return(0,re.jsx)("td",{style:{width:S,maxWidth:k,minWidth:M},role:"presentation",children:(0,re.jsx)(Ib,{fields:t,item:e,column:C,align:A})},C)})]},r)}function Ab({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:u,className:f,empty:d}){let m=(0,Bt.useRef)(new Map),p=(0,Bt.useRef)(),[g,x]=(0,Bt.useState)(),_=ua(e)??!1;(0,Bt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let y=(0,Bt.useId)();if(g){p.current=g,x(void 0);return}let w=b=>{let N=m.current.get(b.id),j=N?m.current.get(N.fallback):void 0;x(j?.node)},E=!!t?.length,T=r.find(b=>b.id===u.titleField),I=r.find(b=>b.id===u.mediaField),V=r.find(b=>b.id===u.descriptionField),D=u.groupBy?.field?r.find(b=>b.id===u.groupBy?.field):null,C=D?Lt(t,D):null,{showTitle:S=!0,showMedia:k=!0,showDescription:M=!0}=u,A=T&&S||I&&k||V&&M,v=u.fields??[],h=(b,N)=>j=>{j?m.current.set(b,{node:j,fallback:v[N>0?N-1:1]}):m.current.delete(b)},O=u.infiniteScrollEnabled&&!C;return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsxs)("table",{className:Y("dataviews-view-table","dataviews-view-picker-table",f,{[`has-${u.layout?.density}-density`]:u.layout?.density&&["compact","comfortable"].includes(u.layout.density)}),"aria-busy":n,"aria-describedby":y,role:O?"feed":"listbox",children:[(0,re.jsx)("thead",{role:"presentation",children:(0,re.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,re.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:_&&(0,re.jsx)(An,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),A&&(0,re.jsx)("th",{children:T&&(0,re.jsx)(Wo,{ref:h(T.id,0),fieldId:T.id,view:u,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:!1})}),v.map((b,N)=>{let{width:j,maxWidth:P,minWidth:G,align:K}=u.layout?.styles?.[b]??{};return(0,re.jsx)("th",{style:{width:j,maxWidth:P,minWidth:G,textAlign:K},"aria-sort":u.sort?.direction&&u.sort?.field===b?Ui[u.sort.direction]:void 0,scope:"col",children:(0,re.jsx)(Wo,{ref:h(b,N),fieldId:b,view:u,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:u.layout?.enableMoving??!0})},b)})]})}),E&&D&&C?Array.from(C.entries()).map(([b,N])=>(0,re.jsxs)(xo.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,re.jsx)("tbody",{role:"group"}),children:[(0,re.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,re.jsx)("td",{colSpan:v.length+(A?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?b:(0,ca.sprintf)((0,ca.__)("%1$s: %2$s"),D.label,b)})}),N.map((j,P)=>(0,re.jsx)($d,{item:j,fields:r,id:o(j)||P.toString(),view:u,titleField:T,mediaField:I,descriptionField:V,selection:s,getItemId:o,onChangeSelection:a,multiselect:_},o(j)))]},`group-${b}`)):(0,re.jsx)(xo.Composite,{render:(0,re.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:E&&t.map((b,N)=>(0,re.jsx)($d,{item:b,fields:r,id:o(b)||N.toString(),view:u,titleField:T,mediaField:I,descriptionField:V,selection:s,getItemId:o,onChangeSelection:a,multiselect:_,posinset:N+1},o(b)))})]}),(0,re.jsxs)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!E&&!n}),id:y,children:[!E&&(n?(0,re.jsx)("p",{children:(0,re.jsx)(xo.Spinner,{})}):d),E&&n&&(0,re.jsx)("p",{className:"dataviews-loading-more",children:(0,re.jsx)(xo.Spinner,{})})]})]})}var Kd=Ab;var Qd=c($(),1),Xd=c(X(),1),Zd=c(z(),1);var Jd=c(R(),1),Vb=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function ql(){let e=(0,Zd.useContext)(U),t=e.view,r=Vb.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,Jd.jsx)(Qd.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,Xd.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var Uo=c($(),1),$o=c(X(),1),ef=c(z(),1);var Ko=c(R(),1);function Dn(){let e=(0,ef.useContext)(U),t=e.view;return(0,Ko.jsxs)(Uo.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,$o.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,Ko.jsx)(Uo.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,$o._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Ko.jsx)(Uo.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,$o._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Ko.jsx)(Uo.__experimentalToggleGroupControlOption,{value:"compact",label:(0,$o._x)("Compact","Density option for DataView layout")},"compact")]})}var Xr=[{type:Lo,label:(0,_r.__)("Table"),component:Cd,icon:Ci,viewConfigOptions:Dn},{type:Ki,label:(0,_r.__)("Grid"),component:Id,icon:Pi,viewConfigOptions:ql},{type:Xc,label:(0,_r.__)("List"),component:jl,icon:(0,_r.isRTL)()?sl:ul,viewConfigOptions:Dn},{type:Zc,label:(0,_r.__)("Activity"),component:Fd,icon:xl,viewConfigOptions:Dn},{type:Jc,label:(0,_r.__)("Grid"),component:Ud,icon:Pi,viewConfigOptions:ql,isPicker:!0},{type:ed,label:(0,_r.__)("Table"),component:Kd,icon:Ci,viewConfigOptions:Dn,isPicker:!0}];var dn=c(z(),1);var Yt=c($(),1),Ir=c(X(),1),Ya=c(z(),1);var Tb=Object.defineProperty,Rb=Object.defineProperties,kb=Object.getOwnPropertyDescriptors,da=Object.getOwnPropertySymbols,rf=Object.prototype.hasOwnProperty,of=Object.prototype.propertyIsEnumerable,tf=(e,t,r)=>t in e?Tb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,B=(e,t)=>{for(var r in t||(t={}))rf.call(t,r)&&tf(e,r,t[r]);if(da)for(var r of da(t))of.call(t,r)&&tf(e,r,t[r]);return e},Z=(e,t)=>Rb(e,kb(t)),ae=(e,t)=>{var r={};for(var o in e)rf.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&da)for(var o of da(e))t.indexOf(o)<0&&of.call(e,o)&&(r[o]=e[o]);return r};var Nb=Object.defineProperty,Db=Object.defineProperties,Mb=Object.getOwnPropertyDescriptors,fa=Object.getOwnPropertySymbols,af=Object.prototype.hasOwnProperty,sf=Object.prototype.propertyIsEnumerable,nf=(e,t,r)=>t in e?Nb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,se=(e,t)=>{for(var r in t||(t={}))af.call(t,r)&&nf(e,r,t[r]);if(fa)for(var r of fa(t))sf.call(t,r)&&nf(e,r,t[r]);return e},je=(e,t)=>Db(e,Mb(t)),ma=(e,t)=>{var r={};for(var o in e)af.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&fa)for(var o of fa(e))t.indexOf(o)<0&&sf.call(e,o)&&(r[o]=e[o]);return r};function Mn(...e){}function Yl(e,t){if(Fb(e)){let r=Lb(t)?t():t;return e(r)}return e}function Fb(e){return typeof e=="function"}function Lb(e){return typeof e=="function"}function Vt(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function Zr(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function Fn(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function Ul(e,t){let r=se({},e);for(let o of t)Vt(r,o)&&delete r[o];return r}function $l(e,t){let r={};for(let o of t)Vt(e,o)&&(r[o]=e[o]);return r}function Ln(e){return e}function ot(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function Kl(e){return Object.keys(e)}function Ql(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function _o(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function nt(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function oe(...e){for(let t of e)if(t!==void 0)return t}var lf=c(me(),1);function uf(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function Bb(e){return!e||!(0,lf.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function cf(e){return Bb(e)?B({},e.props).ref||e.ref:null}function df(e,t){let r=B({},e);for(let o in t){if(!Vt(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?B(B({},e[i]),t[i]):t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var Jr=jb();function jb(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function wr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function wo(e,t=!1){let{activeElement:r}=wr(e);if(!r?.nodeName)return null;if(Xl(r)&&r.contentDocument)return wo(r.contentDocument.body,t);if(t){let o=r.getAttribute("aria-activedescendant");if(o){let n=wr(r).getElementById(o);if(n)return n}}return r}function er(e,t){return e===t||e.contains(t)}function Xl(e){return e.tagName==="IFRAME"}function yr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?Hb.indexOf(e.type)!==-1:!1}var Hb=["button","color","file","image","reset","submit"];function Zl(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function wt(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function Bn(e){return e.isContentEditable||wt(e)}function Jl(e){if(wt(e))return e.value;if(e.isContentEditable){let t=wr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function Qo(e){let t=0,r=0;if(wt(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=wr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&er(e,o.anchorNode)&&o.focusNode&&er(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function eu(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function Xo(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return Xo(e.parentElement)||document.scrollingElement||document.body}function jn(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function tu(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),u=t(s);return l===u||!l||!u?0:zb(l,u)?(n>a&&(o=!0),-1):(ni):e}function zb(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function ru(){return Jr&&!!navigator.maxTouchPoints}function pa(){return Jr?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function yo(){return Jr&&pa()&&/apple/i.test(navigator.vendor)}function ou(){return Jr&&/firefox\//i.test(navigator.userAgent)}function va(e){return!!(e.currentTarget&&!er(e.currentTarget,e.target))}function mt(e){return e.target===e.currentTarget}function ff(e){let t=e.currentTarget;if(!t)return!1;let r=pa();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function mf(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function So(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n=je(se({},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",n)),o}function pf(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function nu(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function ga(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!er(r,o)}function eo(e,t,r,o){let i=(s=>{if(o){let u=setTimeout(s,o);return()=>clearTimeout(u)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function tr(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(tr(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var be=c(me(),1),Wb=c(me(),1),iu=B({},Wb),vf=iu.useId,G2=iu.useDeferredValue,gf=iu.useInsertionEffect,ke=Jr?be.useLayoutEffect:be.useEffect;function Gb(e){let[t]=(0,be.useState)(e);return t}function xf(e){let t=(0,be.useRef)(e);return ke(()=>{t.current=e}),t}function ne(e){let t=(0,be.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return gf?gf(()=>{t.current=e}):t.current=e,(0,be.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function _f(e){let[t,r]=(0,be.useState)(null);return ke(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function Ne(...e){return(0,be.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)uf(r,t)}},e)}function jt(e){if(vf){let o=vf();return e||o}let[t,r]=(0,be.useState)(e);return ke(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function wf(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,be.useState)(()=>r(t));return ke(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function yf(e,t,r){let o=Gb(r),[n,i]=(0,be.useState)(o);return(0,be.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let u=a.getAttribute(t);i(u??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function rr(e,t){let r=(0,be.useRef)(!1);(0,be.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,be.useEffect)(()=>()=>{r.current=!1},[])}function Sf(e,t){let r=(0,be.useRef)(!1);ke(()=>{if(r.current)return e();r.current=!0},t),ke(()=>()=>{r.current=!1},[])}function Cf(){return(0,be.useReducer)(()=>[],[])}function He(e){return ne(typeof e=="function"?e:()=>e)}function or(e,t,r=[]){let o=(0,be.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return Z(B({},e),{wrapElement:o})}function Ef(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,be.useMemo)(()=>Object.assign(()=>{},Z(B({},o),{[t]:r})),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}function Pf(){return(0,be.useEffect)(()=>{tr("mousemove",Yb,!0),tr("mousedown",ha,!0),tr("mouseup",ha,!0),tr("keydown",ha,!0),tr("scroll",ha,!0)},[]),ne(()=>au)}var au=!1,hf=0,bf=0;function qb(e){let t=e.movementX||e.screenX-hf,r=e.movementY||e.screenY-bf;return hf=e.screenX,bf=e.screenY,t||r||!1}function Yb(e){qb(e)&&(au=!0)}function ha(){au=!1}var yt=c(me(),1),Co=c(R(),1);function xe(e){let t=yt.forwardRef((r,o)=>e(Z(B({},r),{ref:o})));return t.displayName=e.displayName||e.name,t}function to(e,t){return yt.memo(e,t)}function ye(e,t){let r=t,{wrapElement:o,render:n}=r,i=ae(r,["wrapElement","render"]),a=Ne(t.ref,cf(n)),s;if(yt.isValidElement(n)){let l=Z(B({},n.props),{ref:a});s=yt.cloneElement(n,df(i,l))}else n?s=n(i):s=(0,Co.jsx)(e,B({},i));return o?o(s):s}function Se(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function Tt(e=[],t=[]){let r=yt.createContext(void 0),o=yt.createContext(void 0),n=()=>yt.useContext(r),i=(u=!1)=>{let f=yt.useContext(o),d=n();return u?f:f||d},a=()=>{let u=yt.useContext(o),f=n();if(!(u&&u===f))return f},s=u=>e.reduceRight((f,d)=>(0,Co.jsx)(d,Z(B({},u),{children:f})),(0,Co.jsx)(r.Provider,B({},u)));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:u=>(0,Co.jsx)(s,Z(B({},u),{children:t.reduceRight((f,d)=>(0,Co.jsx)(d,Z(B({},u),{children:f})),(0,Co.jsx)(o.Provider,B({},u)))}))}}var Hn=Tt(),Of=Hn.useContext,X2=Hn.useScopedContext,Z2=Hn.useProviderContext,If=Hn.ContextProvider,Af=Hn.ScopedContextProvider;var su=c(me(),1),zn=Tt([If],[Af]),ba=zn.useContext,rE=zn.useScopedContext,Vf=zn.useProviderContext,Zo=zn.ContextProvider,xa=zn.ScopedContextProvider,Tf=(0,su.createContext)(void 0),Rf=(0,su.createContext)(void 0);var lu=c(me(),1),aE=(0,lu.createContext)(null),sE=(0,lu.createContext)(null),Wn=Tt([Zo],[xa]),kf=Wn.useContext,lE=Wn.useScopedContext,uE=Wn.useProviderContext,cE=Wn.ContextProvider,dE=Wn.ScopedContextProvider;function Eo(e,t){let r=e.__unstableInternals;return ot(r,"Invalid store"),r[t]}function St(e,...t){let r=e,o=r,n=Symbol(),i=Mn,a=new Set,s=new Set,l=new Set,u=new Set,f=new Set,d=new WeakMap,m=new WeakMap,p=C=>(l.add(C),()=>l.delete(C)),g=()=>{let C=a.size,S=Symbol();a.add(S);let k=()=>{a.delete(S),!a.size&&i()};if(C)return k;let M=Kl(r).map(h=>Zr(...t.map(O=>{var b;let N=(b=O?.getState)==null?void 0:b.call(O);if(N&&Vt(N,h))return et(O,[h],j=>{V(h,j[h],!0)})}))),A=[];for(let h of l)A.push(h());let v=t.map(Jo);return i=Zr(...M,...A,...v),k},x=(C,S,k=u)=>(k.add(S),m.set(S,C),()=>{var M;(M=d.get(S))==null||M(),d.delete(S),m.delete(S),k.delete(S)}),_=(C,S)=>x(C,S),y=(C,S)=>(d.set(S,S(r,r)),x(C,S)),w=(C,S)=>(d.set(S,S(r,o)),x(C,S,f)),E=C=>St($l(r,C),D),T=C=>St(Ul(r,C),D),I=()=>r,V=(C,S,k=!1)=>{var M;if(!Vt(r,C))return;let A=Yl(S,r[C]);if(A===r[C])return;if(!k)for(let b of t)(M=b?.setState)==null||M.call(b,C,A);let v=r;r=je(se({},r),{[C]:A});let h=Symbol();n=h,s.add(C);let O=(b,N,j)=>{var P;let G=m.get(b),K=Xe=>j?j.has(Xe):Xe===C;(!G||G.some(K))&&((P=d.get(b))==null||P(),d.set(b,b(r,N)))};for(let b of u)O(b,v);queueMicrotask(()=>{if(n!==h)return;let b=r;for(let N of f)O(N,o,s);o=b,s.clear()})},D={getState:I,setState:V,__unstableInternals:{setup:p,init:g,subscribe:_,sync:y,batch:w,pick:E,omit:T}};return D}function Je(e,...t){if(e)return Eo(e,"setup")(...t)}function Jo(e,...t){if(e)return Eo(e,"init")(...t)}function en(e,...t){if(e)return Eo(e,"subscribe")(...t)}function et(e,...t){if(e)return Eo(e,"sync")(...t)}function ro(e,...t){if(e)return Eo(e,"batch")(...t)}function Gn(e,...t){if(e)return Eo(e,"omit")(...t)}function uu(e,...t){if(e)return Eo(e,"pick")(...t)}function Po(...e){let t=e.reduce((o,n)=>{var i;let a=(i=n?.getState)==null?void 0:i.call(n);return a?Object.assign(o,a):o},{}),r=St(t,...e);return Object.assign({},...e,r)}var nr=c(me(),1),Nf=c(zc(),1),{useSyncExternalStore:Df}=Nf.default,Mf=()=>()=>{};function tn(e,t=Ln){let r=nr.useCallback(n=>e?en(e,null,n):Mf(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&Vt(a,n))return a[n]};return Df(r,o,o)}function wa(e,t){let r=nr.useRef({}),o=nr.useCallback(i=>e?en(e,null,i):Mf(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let u=t[l];if(typeof u=="function"){let f=u(i);f!==s[l]&&(s[l]=f,a=!0)}if(typeof u=="string"){if(!i||!Vt(i,u))continue;let f=i[u];f!==s[l]&&(s[l]=f,a=!0)}}return a&&(r.current=B({},s)),r.current};return Df(o,n,n)}function De(e,t,r,o){let n=Vt(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=xf({value:n,setValue:i});ke(()=>et(e,[r],(s,l)=>{let{value:u,setValue:f}=a.current;f&&s[r]!==l[r]&&s[r]!==u&&f(s[r])}),[e,r]),ke(()=>{if(n!==void 0)return e.setState(r,n),ro(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function rn(e,t){let[r,o]=nr.useState(()=>e(t));ke(()=>Jo(r),[r]);let n=nr.useCallback(s=>tn(r,s),[r]),i=nr.useMemo(()=>Z(B({},r),{useState:n}),[r,n]),a=ne(()=>{o(s=>e(B(B({},t),s.getState())))});return[i,a]}function Ub(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return wr(n).body}function $b(e){return e?.__unstablePrivateStore}function Ff(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=oe(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:oe(r?.renderedItems,[])},a=$b(e.store),s=St({items:o,renderedItems:i.renderedItems},a),l=St(i,e.store),u=m=>{let p=tu(m,g=>g.element);s.setState("renderedItems",p),l.setState("renderedItems",p)};Je(l,()=>Jo(s)),Je(s,()=>ro(s,["items"],m=>{l.setState("items",m.items)})),Je(s,()=>ro(s,["renderedItems"],m=>{let p=!0,g=requestAnimationFrame(()=>{let{renderedItems:w}=l.getState();m.renderedItems!==w&&u(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(g);let x=()=>{if(p){p=!1;return}cancelAnimationFrame(g),g=requestAnimationFrame(()=>u(m.renderedItems))},_=Ub(m.renderedItems),y=new IntersectionObserver(x,{root:_});for(let w of m.renderedItems)w.element&&y.observe(w.element);return()=>{cancelAnimationFrame(g),y.disconnect()}}));let f=(m,p,g=!1)=>{let x;return p(y=>{let w=y.findIndex(({id:T})=>T===m.id),E=y.slice();if(w!==-1){x=y[w];let T=se(se({},x),m);E[w]=T,n.set(m.id,T)}else E.push(m),n.set(m.id,m);return E}),()=>{p(y=>{if(!x)return g&&n.delete(m.id),y.filter(({id:T})=>T!==m.id);let w=y.findIndex(({id:T})=>T===m.id);if(w===-1)return y;let E=y.slice();return E[w]=x,n.set(m.id,x),E})}},d=m=>f(m,p=>s.setState("items",p),!0);return je(se({},l),{registerItem:d,renderItem:m=>Zr(d(m),f(m,p=>s.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:g}=s.getState();p=g.find(x=>x.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:s})}function Lf(e,t,r){return rr(t,[r.store]),De(e,r,"items","setItems"),e}function cu(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function qn(e){let t=[];for(let r of e)t.push(...r);return t}function on(e){return e.slice().reverse()}var Kb={id:null};function Sr(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function Qb(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function Bf(e,t){return e.filter(r=>r.rowId===t)}function Xb(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[Kb]:[],...e.slice(0,o)]}function jf(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Hf(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function Zb(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function Jb(e,t,r){let o=Hf(e);for(let n of e)for(let i=0;iet(a,["renderedItems","activeId"],l=>{a.setState("activeId",u=>{var f;return u!==void 0?u:(f=Sr(l.renderedItems))==null?void 0:f.id})}));let s=(l="next",u={})=>{var f,d;let m=a.getState(),{skip:p=0,activeId:g=m.activeId,focusShift:x=m.focusShift,focusLoop:_=m.focusLoop,focusWrap:y=m.focusWrap,includesBaseElement:w=m.includesBaseElement,renderedItems:E=m.renderedItems,rtl:T=m.rtl}=u,I=l==="up"||l==="down",V=l==="next"||l==="down",D=V?T&&!I:!T||I,C=x&&!p,S=I?qn(Jb(jf(E),g,C)):E;if(S=D?on(S):S,S=I?ex(S):S,g==null)return(f=Sr(S))==null?void 0:f.id;let k=S.find(P=>P.id===g);if(!k)return(d=Sr(S))==null?void 0:d.id;let M=S.some(P=>P.rowId),A=S.indexOf(k),v=S.slice(A+1),h=Bf(v,k.rowId);if(p){let P=Qb(h,g),G=P.slice(p)[0]||P[P.length-1];return G?.id}let O=_&&(I?_!=="horizontal":_!=="vertical"),b=M&&y&&(I?y!=="horizontal":y!=="vertical"),N=V?(!M||I)&&O&&w:I?w:!1;if(O){let P=b&&!N?S:Bf(S,k.rowId),G=Xb(P,g,N),K=Sr(G,g);return K?.id}if(b){let P=Sr(N?h:v,g);return N?P?.id||null:P?.id}let j=Sr(h,g);return!j&&N?null:j?.id};return je(se(se({},o),a),{setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",u=>u+1))},first:()=>{var l;return(l=Sr(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=Sr(on(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))})}function Wf(e){let t=jt(e.id);return B({id:t},e)}function Gf(e,t,r){return e=Lf(e,t,r),De(e,r,"activeId","setActiveId"),De(e,r,"includesBaseElement"),De(e,r,"virtualFocus"),De(e,r,"orientation"),De(e,r,"rtl"),De(e,r,"focusLoop"),De(e,r,"focusWrap"),De(e,r,"focusShift"),e}function qf(e={}){let t=Po(e.store,Gn(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=oe(e.open,r?.open,e.defaultOpen,!1),n=oe(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:oe(r?.contentElement,null),disclosureElement:oe(r?.disclosureElement,null)},a=St(i,t);return Je(a,()=>et(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),Je(a,()=>en(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Je(a,()=>et(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),je(se({},a),{disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)})}function Yf(e,t,r){return rr(t,[r.store,r.disclosure]),De(e,r,"open","setOpen"),De(e,r,"mounted","setMounted"),De(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}function Uf(e={}){return qf(e)}function $f(e,t,r){return Yf(e,t,r)}function Kf(e={}){var t=e,{popover:r}=t,o=ma(t,["popover"]);let n=Po(o.store,Gn(r,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let i=n?.getState(),a=Uf(je(se({},o),{store:n})),s=oe(o.placement,i?.placement,"bottom"),l=je(se({},a.getState()),{placement:s,currentPlacement:s,anchorElement:oe(i?.anchorElement,null),popoverElement:oe(i?.popoverElement,null),arrowElement:oe(i?.arrowElement,null),rendered:Symbol("rendered")}),u=St(l,a,n);return je(se(se({},a),u),{setAnchorElement:f=>u.setState("anchorElement",f),setPopoverElement:f=>u.setState("popoverElement",f),setArrowElement:f=>u.setState("arrowElement",f),render:()=>u.setState("rendered",Symbol("rendered"))})}function Qf(e,t,r){return rr(t,[r.popover]),De(e,r,"placement"),$f(e,t,r)}var tx=yo()&&ru();function Xf(e={}){var t=e,{tag:r}=t,o=ma(t,["tag"]);let n=Po(o.store,uu(r,["value","rtl"]));let i=r?.getState(),a=n?.getState(),s=oe(o.activeId,a?.activeId,o.defaultActiveId,null),l=zf(je(se({},o),{activeId:s,includesBaseElement:oe(o.includesBaseElement,a?.includesBaseElement,!0),orientation:oe(o.orientation,a?.orientation,"vertical"),focusLoop:oe(o.focusLoop,a?.focusLoop,!0),focusWrap:oe(o.focusWrap,a?.focusWrap,!0),virtualFocus:oe(o.virtualFocus,a?.virtualFocus,!0)})),u=Kf(je(se({},o),{placement:oe(o.placement,a?.placement,"bottom-start")})),f=oe(o.value,a?.value,o.defaultValue,""),d=oe(o.selectedValue,a?.selectedValue,i?.values,o.defaultSelectedValue,""),m=Array.isArray(d),p=je(se(se({},l.getState()),u.getState()),{value:f,selectedValue:d,resetValueOnSelect:oe(o.resetValueOnSelect,a?.resetValueOnSelect,m),resetValueOnHide:oe(o.resetValueOnHide,a?.resetValueOnHide,m&&!r),activeValue:a?.activeValue}),g=St(p,l,u,n);return tx&&Je(g,()=>et(g,["virtualFocus"],()=>{g.setState("virtualFocus",!1)})),Je(g,()=>{if(r)return Zr(et(g,["selectedValue"],x=>{Array.isArray(x.selectedValue)&&r.setValues(x.selectedValue)}),et(r,["values"],x=>{g.setState("selectedValue",x.values)}))}),Je(g,()=>et(g,["resetValueOnHide","mounted"],x=>{x.resetValueOnHide&&(x.mounted||g.setState("value",f))})),Je(g,()=>et(g,["open"],x=>{x.open||(g.setState("activeId",s),g.setState("moves",0))})),Je(g,()=>et(g,["moves","activeId"],(x,_)=>{x.moves===_.moves&&g.setState("activeValue",void 0)})),Je(g,()=>ro(g,["moves","renderedItems"],(x,_)=>{if(x.moves===_.moves)return;let{activeId:y}=g.getState(),w=l.item(y);g.setState("activeValue",w?.value)})),je(se(se(se({},u),l),g),{tag:r,setValue:x=>g.setState("value",x),resetValue:()=>g.setState("value",p.value),setSelectedValue:x=>g.setState("selectedValue",x)})}function ox(e){let t=kf();return e=Z(B({},e),{tag:e.tag!==void 0?e.tag:t}),Wf(e)}function nx(e,t,r){return rr(t,[r.tag]),De(e,r,"value","setValue"),De(e,r,"selectedValue","setSelectedValue"),De(e,r,"resetValueOnHide"),De(e,r,"resetValueOnSelect"),Object.assign(Gf(Qf(e,t,r),t,r),{tag:r.tag})}function du(e={}){e=ox(e);let[t,r]=rn(Xf,e);return nx(t,r,e)}var Yn=Tt(),SP=Yn.useContext,CP=Yn.useScopedContext,fu=Yn.useProviderContext,Zf=Yn.ContextProvider,Jf=Yn.ScopedContextProvider;var mu=c(me(),1),Un=Tt([Zf],[Jf]),IP=Un.useContext,AP=Un.useScopedContext,VP=Un.useProviderContext,em=Un.ContextProvider,ya=Un.ScopedContextProvider,TP=(0,mu.createContext)(void 0),RP=(0,mu.createContext)(void 0);var $n=Tt([em],[ya]),MP=$n.useContext,FP=$n.useScopedContext,tm=$n.useProviderContext,rm=$n.ContextProvider,om=$n.ScopedContextProvider;var Sa=c(me(),1),Ca=(0,Sa.createContext)(void 0),Kn=Tt([rm,Zo],[om,xa]),pu=Kn.useContext,nn=Kn.useScopedContext,Ea=Kn.useProviderContext,nm=Kn.ContextProvider,im=Kn.ScopedContextProvider,Pa=(0,Sa.createContext)(void 0),am=(0,Sa.createContext)(!1);var ix="div",vu=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=tm();return o=o||i,n=Z(B({},n),{ref:Ne(o?.setAnchorElement,n.ref)}),n}),UP=xe(function(t){let r=vu(t);return ye(ix,r)});function sm(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function ir(e,t){return t&&e.item(t)||null}function lm(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function um(e,t=!1){if(wt(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=wr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var gu=Symbol("FOCUS_SILENTLY");function cm(e){e[gu]=!0,e.focus({preventScroll:!0})}function dm(e){let t=e[gu];return delete e[gu],t}function Oo(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var fm=c(me(),1),mm=(0,fm.createContext)(!0);var pm="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function Qn(e){return!(!e.matches(pm)||!Zl(e)||e.closest("[inert]"))}function vm(e){for(;e&&!Qn(e);)e=e.closest(pm);return e||null}function Ht(e){let t=wo(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function hu(e){let t=wo(e);if(!t)return!1;if(er(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function gm(e){!hu(e)&&Qn(e)&&e.focus()}function hm(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(se({block:"nearest",inline:"nearest"},t))):e.focus()}var Mt=c(me(),1),ax="div",bm=yo(),sx=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],lx=Symbol("safariFocusAncestor");function xm(e,t){e&&(e[lx]=t)}function ux(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?sx.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function cx(e){return"labels"in e?e.labels:null}function _m(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function dx(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function fx(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function mx(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function bu(e,t){return ne(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var xu=!0;function px(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(xu=!1))}function vx(e){e.metaKey||e.ctrlKey||e.altKey||(xu=!0)}var Xn=Se(function(t){var r=t,{focusable:o=!0,accessibleWhenDisabled:n,autoFocus:i,onFocusVisible:a}=r,s=ae(r,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);let l=(0,Mt.useRef)(null);(0,Mt.useEffect)(()=>{o&&(tr("mousedown",px,!0),tr("keydown",vx,!0))},[o]),bm&&(0,Mt.useEffect)(()=>{if(!o)return;let b=l.current;if(!b||!_m(b))return;let N=cx(b);if(!N)return;let j=()=>queueMicrotask(()=>b.focus());for(let P of N)P.addEventListener("mouseup",j);return()=>{for(let P of N)P.removeEventListener("mouseup",j)}},[o]);let u=o&&_o(s),f=!!u&&!n,[d,m]=(0,Mt.useState)(!1);(0,Mt.useEffect)(()=>{o&&f&&d&&m(!1)},[o,f,d]),(0,Mt.useEffect)(()=>{if(!o||!d)return;let b=l.current;if(!b||typeof IntersectionObserver>"u")return;let N=new IntersectionObserver(()=>{Qn(b)||m(!1)});return N.observe(b),()=>N.disconnect()},[o,d]);let p=bu(s.onKeyPressCapture,u),g=bu(s.onMouseDownCapture,u),x=bu(s.onClickCapture,u),_=s.onMouseDown,y=ne(b=>{if(_?.(b),b.defaultPrevented||!o)return;let N=b.currentTarget;if(!bm||va(b)||!yr(N)&&!_m(N))return;let j=!1,P=()=>{j=!0},G={capture:!0,once:!0};N.addEventListener("focusin",P,G);let K=vm(N.parentElement);xm(K,!0),eo(N,"mouseup",()=>{N.removeEventListener("focusin",P,!0),xm(K,!1),!j&&gm(N)})}),w=(b,N)=>{if(N&&(b.currentTarget=N),!o)return;let j=b.currentTarget;j&&Ht(j)&&(a?.(b),!b.defaultPrevented&&(j.dataset.focusVisible="true",m(!0)))},E=s.onKeyDownCapture,T=ne(b=>{if(E?.(b),b.defaultPrevented||!o||d||b.metaKey||b.altKey||b.ctrlKey||!mt(b))return;let N=b.currentTarget;eo(N,"focusout",()=>w(b,N))}),I=s.onFocusCapture,V=ne(b=>{if(I?.(b),b.defaultPrevented||!o)return;if(!mt(b)){m(!1);return}let N=b.currentTarget,j=()=>w(b,N);xu||ux(b.target)?eo(b.target,"focusout",j):m(!1)}),D=s.onBlur,C=ne(b=>{D?.(b),o&&ga(b)&&m(!1)}),S=(0,Mt.useContext)(mm),k=ne(b=>{o&&i&&b&&S&&queueMicrotask(()=>{Ht(b)||Qn(b)&&b.focus()})}),M=wf(l),A=o&&dx(M),v=o&&fx(M),h=s.style,O=(0,Mt.useMemo)(()=>f?B({pointerEvents:"none"},h):h,[f,h]);return s=Z(B({"data-focus-visible":o&&d||void 0,"data-autofocus":i||void 0,"aria-disabled":u||void 0},s),{ref:Ne(l,k,s.ref),style:O,tabIndex:mx(o,f,A,v,s.tabIndex),disabled:v&&f?!0:void 0,contentEditable:u?void 0:s.contentEditable,onKeyPressCapture:p,onClickCapture:x,onMouseDownCapture:g,onMouseDown:y,onKeyDownCapture:T,onFocusCapture:V,onBlur:C}),nt(s)}),mO=xe(function(t){let r=Xn(t);return ye(ax,r)});var ar=c(me(),1),ym=c(R(),1),gx="div";function hx(e){return e.some(t=>!!t.rowId)}function bx(e){let t=e.target;return t&&!wt(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function xx(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function wm(e,t,r){return ne(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!mt(o)||xx(o)||bx(o))return;let i=e.getState(),a=(n=ir(e,i.activeId))==null?void 0:n.element;if(!a)return;let s=o,{view:l}=s,u=ae(s,["view"]),f=r?.current;a!==f&&a.focus(),pf(a,o.type,u)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function _x(e){return sm(qn(on(lm(e))))}function wx(e){let[t,r]=(0,ar.useState)(!1),o=(0,ar.useCallback)(()=>r(!0),[]),n=e.useState(i=>ir(e,i.activeId));return(0,ar.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var _u=Se(function(t){var r=t,{store:o,composite:n=!0,focusOnMove:i=n,moveOnKeyPress:a=!0}=r,s=ae(r,["store","composite","focusOnMove","moveOnKeyPress"]);let l=Vf();o=o||l,ot(o,!1);let u=(0,ar.useRef)(null),f=(0,ar.useRef)(null),d=wx(o),m=o.useState("moves"),[,p]=_f(n?o.setBaseElement:null);(0,ar.useEffect)(()=>{var v;if(!o||!m||!n||!i)return;let{activeId:h}=o.getState(),O=(v=ir(o,h))==null?void 0:v.element;O&&hm(O)},[o,m,n,i]),ke(()=>{if(!o||!m||!n)return;let{baseElement:v,activeId:h}=o.getState();if(!(h===null)||!v)return;let b=f.current;f.current=null,b&&So(b,{relatedTarget:v}),Ht(v)||v.focus()},[o,m,n]);let g=o.useState("activeId"),x=o.useState("virtualFocus");ke(()=>{var v;if(!o||!n||!x)return;let h=f.current;if(f.current=null,!h)return;let b=((v=ir(o,g))==null?void 0:v.element)||wo(h);b!==h&&So(h,{relatedTarget:b})},[o,g,x,n]);let _=wm(o,s.onKeyDownCapture,f),y=wm(o,s.onKeyUpCapture,f),w=s.onFocusCapture,E=ne(v=>{if(w?.(v),v.defaultPrevented||!o)return;let{virtualFocus:h}=o.getState();if(!h)return;let O=v.relatedTarget,b=dm(v.currentTarget);mt(v)&&b&&(v.stopPropagation(),f.current=O)}),T=s.onFocus,I=ne(v=>{if(T?.(v),v.defaultPrevented||!n||!o)return;let{relatedTarget:h}=v,{virtualFocus:O}=o.getState();O?mt(v)&&!Oo(o,h)&&queueMicrotask(d):mt(v)&&o.setActiveId(null)}),V=s.onBlurCapture,D=ne(v=>{var h;if(V?.(v),v.defaultPrevented||!o)return;let{virtualFocus:O,activeId:b}=o.getState();if(!O)return;let N=(h=ir(o,b))==null?void 0:h.element,j=v.relatedTarget,P=Oo(o,j),G=f.current;f.current=null,mt(v)&&P?(j===N?G&&G!==j&&So(G,v):N?So(N,v):G&&So(G,v),v.stopPropagation()):!Oo(o,v.target)&&N&&So(N,v)}),C=s.onKeyDown,S=He(a),k=ne(v=>{var h;if(C?.(v),v.defaultPrevented||!o||!mt(v))return;let{orientation:O,renderedItems:b,activeId:N}=o.getState(),j=ir(o,N);if((h=j?.element)!=null&&h.isConnected)return;let P=O!=="horizontal",G=O!=="vertical",K=hx(b);if((v.key==="ArrowLeft"||v.key==="ArrowRight"||v.key==="Home"||v.key==="End")&&wt(v.currentTarget))return;let Pe={ArrowUp:(K||P)&&(()=>{if(K){let q=_x(b);return q?.id}return o?.last()}),ArrowRight:(K||G)&&o.first,ArrowDown:(K||P)&&o.first,ArrowLeft:(K||G)&&o.last,Home:o.first,End:o.last,PageUp:o.first,PageDown:o.last}[v.key];if(Pe){let q=Pe();if(q!==void 0){if(!S(v))return;v.preventDefault(),o.move(q)}}});s=or(s,v=>(0,ym.jsx)(Zo,{value:o,children:v}),[o]);let M=o.useState(v=>{var h;if(o&&n&&v.virtualFocus)return(h=ir(o,v.activeId))==null?void 0:h.id});s=Z(B({"aria-activedescendant":M},s),{ref:Ne(u,p,s.ref),onKeyDownCapture:_,onKeyUpCapture:y,onFocusCapture:E,onFocus:I,onBlurCapture:D,onKeyDown:k});let A=o.useState(v=>n&&(v.virtualFocus||v.activeId===null));return s=Xn(B({focusable:A},s)),s}),AO=xe(function(t){let r=_u(t);return ye(gx,r)});var it=c(me(),1),yx="input";function Sm(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Cm(e,t){return!t||e==null?!1:(e=Fn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function Sx(e){return e.type==="input"}function Cx(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function Ex(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var Px=Se(function(t){var r=t,{store:o,focusable:n=!0,autoSelect:i=!1,getAutoSelectId:a,setValueOnChange:s,showMinLength:l=0,showOnChange:u,showOnMouseDown:f,showOnClick:d=f,showOnKeyDown:m,showOnKeyPress:p=m,blurActiveItemOnClick:g,setValueOnClick:x=!0,moveOnKeyPress:_=!0,autoComplete:y="list"}=r,w=ae(r,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);let E=Ea();o=o||E,ot(o,!1);let T=(0,it.useRef)(null),[I,V]=Cf(),D=(0,it.useRef)(!1),C=(0,it.useRef)(!1),S=o.useState(L=>L.virtualFocus&&i),k=y==="inline"||y==="both",[M,A]=(0,it.useState)(k);Sf(()=>{k&&A(!0)},[k]);let v=o.useState("value"),h=(0,it.useRef)();(0,it.useEffect)(()=>et(o,["selectedValue","activeId"],(L,de)=>{h.current=de.selectedValue}),[]);let O=o.useState(L=>{var de;if(k&&M&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(de=h.current)!=null&&de.includes(L.activeValue))))return L.activeValue}),b=o.useState("renderedItems"),N=o.useState("open"),j=o.useState("contentElement"),P=(0,it.useMemo)(()=>{if(!k||!M)return v;if(Sm(b,O,S)){if(Cm(v,O)){let de=O?.slice(v.length)||"";return v+de}return v}return O||v},[k,M,b,O,S,v]);(0,it.useEffect)(()=>{let L=T.current;if(!L)return;let de=()=>A(!0);return L.addEventListener("combobox-item-move",de),()=>{L.removeEventListener("combobox-item-move",de)}},[]),(0,it.useEffect)(()=>{if(!k||!M||!O||!Sm(b,O,S)||!Cm(v,O))return;let de=Mn;return queueMicrotask(()=>{let qe=T.current;if(!qe)return;let{start:Ye,end:Ft}=Qo(qe),gr=v.length,ut=O.length;jn(qe,gr,ut),de=()=>{if(!Ht(qe))return;let{start:mo,end:vh}=Qo(qe);mo===gr&&vh===ut&&jn(qe,Ye,Ft)}}),()=>de()},[I,k,M,O,b,S,v]);let G=(0,it.useRef)(null),K=ne(a),Xe=(0,it.useRef)(null);(0,it.useEffect)(()=>{if(!N||!j)return;let L=Xo(j);if(!L)return;G.current=L;let de=()=>{D.current=!1},qe=()=>{if(!o||!D.current)return;let{activeId:Ft}=o.getState();Ft!==null&&Ft!==Xe.current&&(D.current=!1)},Ye={passive:!0,capture:!0};return L.addEventListener("wheel",de,Ye),L.addEventListener("touchmove",de,Ye),L.addEventListener("scroll",qe,Ye),()=>{L.removeEventListener("wheel",de,!0),L.removeEventListener("touchmove",de,!0),L.removeEventListener("scroll",qe,!0)}},[N,j,o]),ke(()=>{v&&(C.current||(D.current=!0))},[v]),ke(()=>{S!=="always"&&N||(D.current=N)},[S,N]);let rt=o.useState("resetValueOnSelect");rr(()=>{var L,de;let qe=D.current;if(!o||!N||!qe&&!rt)return;let{baseElement:Ye,contentElement:Ft,activeId:gr}=o.getState();if(!(Ye&&!Ht(Ye))){if(Ft?.hasAttribute("data-placing")){let ut=new MutationObserver(V);return ut.observe(Ft,{attributeFilter:["data-placing"]}),()=>ut.disconnect()}if(S&&qe){let ut=K(b),mo=ut!==void 0?ut:(L=Ex(b))!=null?L:o.first();Xe.current=mo,o.move(mo??null)}else{let ut=(de=o.item(gr||o.first()))==null?void 0:de.element;ut&&"scrollIntoView"in ut&&ut.scrollIntoView({block:"nearest",inline:"nearest"})}}},[o,N,I,v,S,rt,K,b]),(0,it.useEffect)(()=>{if(!k)return;let L=T.current;if(!L)return;let de=[L,j].filter(Ye=>!!Ye),qe=Ye=>{de.every(Ft=>ga(Ye,Ft))&&o?.setValue(P)};for(let Ye of de)Ye.addEventListener("focusout",qe);return()=>{for(let Ye of de)Ye.removeEventListener("focusout",qe)}},[k,j,o,P]);let fe=L=>L.currentTarget.value.length>=l,Pe=w.onChange,q=He(u??fe),Ve=He(s??!o.tag),Ze=ne(L=>{if(Pe?.(L),L.defaultPrevented||!o)return;let de=L.currentTarget,{value:qe,selectionStart:Ye,selectionEnd:Ft}=de,gr=L.nativeEvent;if(D.current=!0,Sx(gr)&&(gr.isComposing&&(D.current=!1,C.current=!0),k)){let ut=gr.inputType==="insertText"||gr.inputType==="insertCompositionText",mo=Ye===qe.length;A(ut&&mo)}if(Ve(L)){let ut=qe===o.getState().value;o.setValue(qe),queueMicrotask(()=>{jn(de,Ye,Ft)}),k&&S&&ut&&V()}q(L)&&o.show(),(!S||!D.current)&&o.setActiveId(null)}),qt=w.onCompositionEnd,kr=ne(L=>{D.current=!0,C.current=!1,qt?.(L),!L.defaultPrevented&&S&&V()}),Mo=w.onMouseDown,fo=He(g??(()=>!!o?.getState().includesBaseElement)),Ps=He(x),Os=He(d??fe),Is=ne(L=>{Mo?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||o&&(fo(L)&&o.setActiveId(null),Ps(L)&&o.setValue(P),Os(L)&&eo(L.currentTarget,"mouseup",o.show)))}),fc=w.onKeyDown,uh=He(p??fe),ch=ne(L=>{if(fc?.(L),L.repeat||(D.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!o)return;let{open:de}=o.getState();de||(L.key==="ArrowUp"||L.key==="ArrowDown")&&uh(L)&&(L.preventDefault(),o.show())}),mc=w.onBlur,dh=ne(L=>{D.current=!1,mc?.(L),L.defaultPrevented}),fh=jt(w.id),mh=Cx(y)?y:void 0,ph=o.useState(L=>L.activeId===null);return w=Z(B({id:fh,role:"combobox","aria-autocomplete":mh,"aria-haspopup":eu(j,"listbox"),"aria-expanded":N,"aria-controls":j?.id,"data-active-item":ph||void 0,value:P},w),{ref:Ne(T,w.ref),onChange:Ze,onCompositionEnd:kr,onMouseDown:Is,onKeyDown:ch,onBlur:dh}),w=_u(Z(B({store:o,focusable:n},w),{moveOnKeyPress:L=>Ql(_,L)?!1:(k&&A(!0),!0)})),w=vu(B({store:o},w)),B({autoComplete:"off"},w)}),Oa=xe(function(t){let r=Px(t);return ye(yx,r)});var Em=c(R(),1);function Ia(e={}){let t=du(e);return(0,Em.jsx)(nm,{value:t,children:e.children})}var oo=c(me(),1),Ox="button";function Pm(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?yr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?yr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var Ix=Symbol("command"),wu=Se(function(t){var r=t,{clickOnEnter:o=!0,clickOnSpace:n=!0}=r,i=ae(r,["clickOnEnter","clickOnSpace"]);let a=(0,oo.useRef)(null),[s,l]=(0,oo.useState)(!1);(0,oo.useEffect)(()=>{a.current&&l(yr(a.current))},[]);let[u,f]=(0,oo.useState)(!1),d=(0,oo.useRef)(!1),m=_o(i),[p,g]=Ef(i,Ix,!0),x=i.onKeyDown,_=ne(E=>{x?.(E);let T=E.currentTarget;if(E.defaultPrevented||p||m||!mt(E)||wt(T)||T.isContentEditable)return;let I=o&&E.key==="Enter",V=n&&E.key===" ",D=E.key==="Enter"&&!o,C=E.key===" "&&!n;if(D||C){E.preventDefault();return}if(I||V){let S=Pm(E);if(I){if(!S){E.preventDefault();let k=E,{view:M}=k,A=ae(k,["view"]),v=()=>nu(T,A);ou()?eo(T,"keyup",v):queueMicrotask(v)}}else V&&(d.current=!0,S||(E.preventDefault(),f(!0)))}}),y=i.onKeyUp,w=ne(E=>{if(y?.(E),E.defaultPrevented||p||m||E.metaKey)return;let T=n&&E.key===" ";if(d.current&&T&&(d.current=!1,!Pm(E))){E.preventDefault(),f(!1);let I=E.currentTarget,V=E,{view:D}=V,C=ae(V,["view"]);queueMicrotask(()=>nu(I,C))}});return i=Z(B(B({"data-active":u||void 0,type:s?"button":void 0},g),i),{ref:Ne(a,i.ref),onKeyDown:_,onKeyUp:w}),i=Xn(i),i}),eI=xe(function(t){let r=wu(t);return ye(Ox,r)});var Aa=c(me(),1),Im=c(R(),1),Ax="span";function Om(e){return Fn(e).toLowerCase()}function Vx(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function Tx(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function Rx(e){return e.sort(([t],[r])=>t-r)}function kx(e,t){if(!e||!t)return e;let r=cu(t).filter(Boolean).map(Om),o=[],n=(l,u=!1)=>(0,Im.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:l},o.length),i=Rx(Tx(Vx(Om(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,u],f)=>{var d;let m=e.slice(l,l+u),p=(d=i[f+1])==null?void 0:d[0],g=e.slice(l+u,p);return[m,g]})].forEach((l,u)=>{l&&o.push(n(l,u%2===0))}),o}var Nx=Se(function(t){var r=t,{store:o,value:n,userValue:i}=r,a=ae(r,["store","value","userValue"]);let s=nn();o=o||s;let l=(0,Aa.useContext)(Pa),u=n??l,f=tn(o,m=>i??m?.value),d=(0,Aa.useMemo)(()=>{if(u)return f?kx(u,f):u},[u,f]);return a=B({children:d},a),nt(a)}),Va=xe(function(t){let r=Nx(t);return ye(Ax,r)});var Am=c(me(),1),Dx="div";function Vm(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function Mx(e){let t=Vm(e);return t?er(e.currentTarget,t):!1}var yu=Symbol("composite-hover");function Fx(e){let t=Vm(e);if(!t)return!1;do{if(Vt(t,yu)&&t[yu])return!0;t=t.parentElement}while(t);return!1}var Su=Se(function(t){var r=t,{store:o,focusOnHover:n=!0,blurOnHoverEnd:i=!!n}=r,a=ae(r,["store","focusOnHover","blurOnHoverEnd"]);let s=ba();o=o||s,ot(o,!1);let l=Pf(),u=a.onMouseMove,f=He(n),d=ne(_=>{if(u?.(_),!_.defaultPrevented&&l()&&f(_)){if(!hu(_.currentTarget)){let y=o?.getState().baseElement;y&&!Ht(y)&&y.focus()}o?.setActiveId(_.currentTarget.id)}}),m=a.onMouseLeave,p=He(i),g=ne(_=>{var y;m?.(_),!_.defaultPrevented&&l()&&(Mx(_)||Fx(_)||f(_)&&p(_)&&(o?.setActiveId(null),(y=o?.getState().baseElement)==null||y.focus()))}),x=(0,Am.useCallback)(_=>{_&&(_[yu]=!0)},[]);return a=Z(B({},a),{ref:Ne(x,a.ref),onMouseMove:d,onMouseLeave:g}),nt(a)}),gI=to(xe(function(t){let r=Su(t);return ye(Dx,r)}));var Ta=c(me(),1),Lx="div",Cu=Se(function(t){var r=t,{store:o,shouldRegisterItem:n=!0,getItem:i=Ln,element:a}=r,s=ae(r,["store","shouldRegisterItem","getItem","element"]);let l=Of();o=o||l;let u=jt(s.id),f=(0,Ta.useRef)(a);return(0,Ta.useEffect)(()=>{let d=f.current;if(!u||!d||!n)return;let m=i({id:u,element:d});return o?.renderItem(m)},[u,n,i,o]),s=Z(B({},s),{ref:Ne(f,s.ref)}),nt(s)}),SI=xe(function(t){let r=Cu(t);return ye(Lx,r)});var Cr=c(me(),1),Rm=c(R(),1),Bx="button";function jx(e){return Bn(e)?!0:e.tagName==="INPUT"&&!yr(e)}function Hx(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function zx(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function Tm(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=Xo(e);if(!a)return;let s=Hx(a,o),l,u;for(let f=0;f=0){u!==void 0&&uK.rowId===w);return x.ariaPosInSet+G.findIndex(K=>K.id===p)},isTabbable(P){if(!P?.renderedItems.length)return!0;if(P.virtualFocus)return!1;if(s)return!0;if(P.activeId===null)return!1;let G=o?.item(P.activeId);return G?.disabled||!G?.element?!0:P.activeId===p}}),C=(0,Cr.useCallback)(P=>{var G;let K=Z(B({},P),{id:p||P.id,rowId:w,disabled:!!y,children:(G=P.element)==null?void 0:G.textContent});return l?l(K):K},[p,w,y,l]),S=d.onFocus,k=(0,Cr.useRef)(!1),M=ne(P=>{if(S?.(P),P.defaultPrevented||va(P)||!p||!o||Wx(P,o))return;let{virtualFocus:G,baseElement:K}=o.getState();if(o.setActiveId(p),Bn(P.currentTarget)&&um(P.currentTarget),!G||!mt(P)||jx(P.currentTarget)||!K?.isConnected)return;yo()&&P.currentTarget.hasAttribute("data-autofocus")&&P.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),k.current=!0,P.relatedTarget===K||Oo(o,P.relatedTarget)?cm(K):K.focus()}),A=d.onBlurCapture,v=ne(P=>{if(A?.(P),P.defaultPrevented)return;let G=o?.getState();G?.virtualFocus&&k.current&&(k.current=!1,P.preventDefault(),P.stopPropagation())}),h=d.onKeyDown,O=He(i),b=He(a),N=ne(P=>{if(h?.(P),P.defaultPrevented||!mt(P)||!o)return;let{currentTarget:G}=P,K=o.getState(),Xe=o.item(p),rt=!!Xe?.rowId,fe=K.orientation!=="horizontal",Pe=K.orientation!=="vertical",q=()=>!!(rt||Pe||!K.baseElement||!wt(K.baseElement)),Ze={ArrowUp:(rt||fe)&&o.up,ArrowRight:(rt||Pe)&&o.next,ArrowDown:(rt||fe)&&o.down,ArrowLeft:(rt||Pe)&&o.previous,Home:()=>{if(q())return!rt||P.ctrlKey?o?.first():o?.previous(-1)},End:()=>{if(q())return!rt||P.ctrlKey?o?.last():o?.next(-1)},PageUp:()=>Tm(G,o,o?.up,!0),PageDown:()=>Tm(G,o,o?.down)}[P.key];if(Ze){if(Bn(G)){let kr=Qo(G),Mo=Pe&&P.key==="ArrowLeft",fo=Pe&&P.key==="ArrowRight",Ps=fe&&P.key==="ArrowUp",Os=fe&&P.key==="ArrowDown";if(fo||Os){let{length:Is}=Jl(G);if(kr.end!==Is)return}else if((Mo||Ps)&&kr.start!==0)return}let qt=Ze();if(O(P)||qt!==void 0){if(!b(P))return;P.preventDefault(),o.move(qt)}}}),j=(0,Cr.useMemo)(()=>({id:p,baseElement:E}),[p,E]);return d=or(d,P=>(0,Rm.jsx)(Tf.Provider,{value:j,children:P}),[j]),d=Z(B({id:p,"data-active-item":T||void 0},d),{ref:Ne(g,d.ref),tabIndex:D?d.tabIndex:-1,onFocus:M,onBlurCapture:v,onKeyDown:N}),d=wu(d),d=Cu(Z(B({store:o},d),{getItem:C,shouldRegisterItem:p?d.shouldRegisterItem:!1})),nt(Z(B({},d),{"aria-setsize":I,"aria-posinset":V}))}),FI=to(xe(function(t){let r=Eu(t);return ye(Bx,r)}));var Ra=c(me(),1),Pu=c(R(),1),Gx="div";function qx(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function Yx(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var km=Se(function(t){var r=t,{store:o,value:n,hideOnClick:i,setValueOnClick:a,selectValueOnClick:s=!0,resetValueOnSelect:l,focusOnHover:u=!1,moveOnKeyPress:f=!0,getItem:d}=r,m=ae(r,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]),p;let g=nn();o=o||g,ot(o,!1);let{resetValueOnSelectState:x,multiSelectable:_,selected:y}=wa(o,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(v){return Array.isArray(v.selectedValue)},selected(v){return qx(v.selectedValue,n)}}),w=(0,Ra.useCallback)(v=>{let h=Z(B({},v),{value:n});return d?d(h):h},[n,d]);a=a??!_,i=i??(n!=null&&!_);let E=m.onClick,T=He(a),I=He(s),V=He((p=l??x)!=null?p:_),D=He(i),C=ne(v=>{E?.(v),!v.defaultPrevented&&(mf(v)||ff(v)||(n!=null&&(I(v)&&(V(v)&&o?.resetValue(),o?.setSelectedValue(h=>Array.isArray(h)?h.includes(n)?h.filter(O=>O!==n):[...h,n]:n)),T(v)&&o?.setValue(n)),D(v)&&o?.hide()))}),S=m.onKeyDown,k=ne(v=>{if(S?.(v),v.defaultPrevented)return;let h=o?.getState().baseElement;if(!h||Ht(h))return;(v.key.length===1||v.key==="Backspace"||v.key==="Delete")&&(queueMicrotask(()=>h.focus()),wt(h)&&o?.setValue(h.value))});_&&y!=null&&(m=B({"aria-selected":y},m)),m=or(m,v=>(0,Pu.jsx)(Pa.Provider,{value:n,children:(0,Pu.jsx)(am.Provider,{value:y??!1,children:v})}),[n,y]);let M=(0,Ra.useContext)(Ca);m=Z(B({role:Yx(M),children:n},m),{onClick:C,onKeyDown:k});let A=He(f);return m=Eu(Z(B({store:o},m),{getItem:w,moveOnKeyPress:v=>{if(!A(v))return!1;let h=new Event("combobox-item-move"),O=o?.getState().baseElement;return O?.dispatchEvent(h),!0}})),m=Su(B({store:o,focusOnHover:u},m)),m}),Zn=to(xe(function(t){let r=km(t);return ye(Gx,r)}));var Ux="label",$x=Se(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=Ea();o=o||i,ot(o,!1);let a=o.useState(s=>{var l;return(l=s.baseElement)==null?void 0:l.id});return n=B({htmlFor:a},n),nt(n)}),ka=to(xe(function(t){let r=$x(t);return ye(Ux,r)}));var an=c(me(),1),Mm=c(Lc(),1),Ou=c(R(),1),Kx="div";function Nm(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function Qx(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function Dm(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function Iu(e,t,r){return!r&&t!==!1&&(!e||!!t)}var Xx=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=fu();o=o||a,ot(o,!1);let s=(0,an.useRef)(null),l=jt(i.id),[u,f]=(0,an.useState)(null),d=o.useState("open"),m=o.useState("mounted"),p=o.useState("animated"),g=o.useState("contentElement"),x=tn(o.disclosure,"contentElement");ke(()=>{s.current&&o?.setContentElement(s.current)},[o]),ke(()=>{let E;return o?.setState("animated",T=>(E=T,!0)),()=>{E!==void 0&&o?.setState("animated",E)}},[o]),ke(()=>{if(p){if(!g?.isConnected){f(null);return}return Qx(()=>{f(d?"enter":m?"leave":null)})}},[p,g,d,m]),ke(()=>{if(!o||!p||!u||!g)return;let E=()=>o?.setState("animating",!1),T=()=>(0,Mm.flushSync)(E);if(u==="leave"&&d||u==="enter"&&!d)return;if(typeof p=="number")return Nm(p,T);let{transitionDuration:I,animationDuration:V,transitionDelay:D,animationDelay:C}=getComputedStyle(g),{transitionDuration:S="0",animationDuration:k="0",transitionDelay:M="0",animationDelay:A="0"}=x?getComputedStyle(x):{},v=Dm(D,C,M,A),h=Dm(I,V,S,k),O=v+h;if(!O){u==="enter"&&o.setState("animated",!1),E();return}let b=1e3/60,N=Math.max(O-b,0);return Nm(N,T)},[o,p,g,x,d,u]),i=or(i,E=>(0,Ou.jsx)(ya,{value:o,children:E}),[o]);let _=Iu(m,i.hidden,n),y=i.style,w=(0,an.useMemo)(()=>_?Z(B({},y),{display:"none"}):y,[_,y]);return i=Z(B({id:l,"data-open":d||void 0,"data-enter":u==="enter"||void 0,"data-leave":u==="leave"||void 0,hidden:_},i),{ref:Ne(l?o.setContentElement:null,s,i.ref),style:w}),nt(i)}),Zx=xe(function(t){let r=Xx(t);return ye(Kx,r)}),dA=xe(function(t){var r=t,{unmountOnHide:o}=r,n=ae(r,["unmountOnHide"]);let i=fu(),a=n.store||i;return tn(a,l=>!o||l?.mounted)===!1?null:(0,Ou.jsx)(Zx,B({},n))});var Na=c(me(),1),Au=c(R(),1),Jx="div",Fm=Se(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=nn(!0),s=pu();o=o||s;let l=!!o&&o===a;ot(o,!1);let u=(0,Na.useRef)(null),f=jt(i.id),d=o.useState("mounted"),m=Iu(d,i.hidden,n),p=m?Z(B({},i.style),{display:"none"}):i.style,g=o.useState(V=>Array.isArray(V.selectedValue)),x=yf(u,"role",i.role),y=(x==="listbox"||x==="tree"||x==="grid")&&g||void 0,[w,E]=(0,Na.useState)(!1),T=o.useState("contentElement");ke(()=>{if(!d)return;let V=u.current;if(!V||T!==V)return;let D=()=>{E(!!V.querySelector("[role='listbox']"))},C=new MutationObserver(D);return C.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),D(),()=>C.disconnect()},[d,T]),w||(i=B({role:"listbox","aria-multiselectable":y},i)),i=or(i,V=>(0,Au.jsx)(im,{value:o,children:(0,Au.jsx)(Ca.Provider,{value:x,children:V})}),[o,x]);let I=f&&(!a||!l)?o.setContentElement:null;return i=Z(B({id:f,hidden:m},i),{ref:Ne(I,u,i.ref),style:p}),nt(i)}),Jn=xe(function(t){let r=Fm(t);return ye(Jx,r)});var qm=c(Hm(),1);var Ym=c(Rt(),1),Er=c(X(),1),Io=c(z(),1),zt=c($(),1);var i_=[],ei=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:i_;var ti=c(z(),1),a_=[];function pt({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:a_,[o,n]=(0,ti.useState)(r),[i,a]=(0,ti.useState)(!1);return(0,ti.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let u=Array.isArray(l)&&l.length>0?l:r;n(u)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var le=c(R(),1);function zm(e=""){return(0,qm.default)(e.trim().toLowerCase())}var Wm=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function Gm(e,t){return`${e}-${t}`}var Um=({selected:e})=>(0,le.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,le.jsx)(zt.Icon,{icon:Cn})}),$m=({selected:e})=>(0,le.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function Km({view:e,filter:t,onChangeView:r}){let o=(0,Ym.useInstanceId)(Km,"dataviews-filter-list-box"),[n,i]=(0,Io.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=ei(t,a);return(0,le.jsx)(zt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Er.sprintf)((0,Er.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(Gm(o,t.elements[0].value))},render:(0,le.jsx)(zt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,le.jsxs)(zt.Composite.Hover,{render:(0,le.jsx)(zt.Composite.Item,{id:Gm(o,l.value),render:(0,le.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:Wm(t,a,l.value)}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:Wm(t,a,l.value)}];r({...e,page:1,filters:u})}}),children:[t.singleSelection&&(0,le.jsx)($m,{selected:s===l.value}),!t.singleSelection&&(0,le.jsx)(Um,{selected:s.includes(l.value)}),(0,le.jsx)("span",{children:l.label})]},l.value))})}function s_({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Io.useState)(""),i=(0,Io.useDeferredValue)(o),a=e.filters?.find(u=>u.field===t.field),s=ei(t,a),l=(0,Io.useMemo)(()=>{let u=zm(i);return t.elements.filter(f=>zm(f.label).includes(u))},[t.elements,i]);return(0,le.jsxs)(Ia,{selectedValue:s,setSelectedValue:u=>{let f=a?[...(e.filters??[]).map(d=>d.field===t.field?{...d,operator:a.operator||t.operators[0],value:u}:d)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:u}];r({...e,page:1,filters:f})},setValue:n,children:[(0,le.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,le.jsx)(ka,{render:(0,le.jsx)(zt.VisuallyHidden,{children:(0,Er.__)("Search items")}),children:(0,Er.__)("Search items")}),(0,le.jsx)(Oa,{autoSelect:"always",placeholder:(0,Er.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,le.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,le.jsx)(zt.Icon,{icon:wl})})]}),(0,le.jsxs)(Jn,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(u=>(0,le.jsxs)(Zn,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,le.jsx)($m,{selected:s===u.value}),!t.singleSelection&&(0,le.jsx)(Um,{selected:s.includes(u.value)}),(0,le.jsxs)("span",{children:[(0,le.jsx)(Va,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,le.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!l.length&&(0,le.jsx)("p",{children:(0,Er.__)("No results found")})]})]})}function Qm(e){let{elements:t,isLoading:r}=pt({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,le.jsx)(zt.Spinner,{})});if(t.length===0)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Er.__)("No elements found")});let o=t.length>10?s_:Km;return(0,le.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var Jm=c(Zm(),1),ep=c(Rt(),1),Vu=c(z(),1),tp=c($(),1);var Tu=c(R(),1);function rp({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(u=>u.field===e.field),i=ei(e,n),a=(0,Vu.useMemo)(()=>{let u=o.find(f=>f.id===e.field);return u&&{...u,isValid:{},getValue:({item:f})=>f[u.id],setValue:({value:f})=>({[u.id]:f})}},[o,e.field]),s=(0,Vu.useMemo)(()=>(t.filters??[]).reduce((u,f)=>(u[f.field]=f.value,u),{}),[t.filters]),l=(0,ep.useEvent)(u=>{if(!a||!n)return;let f=a.getValue({item:u});(0,Jm.default)(f,i)||r({...t,filters:(t.filters??[]).map(d=>d.field===e.field?{...d,operator:n.operator||e.operators[0],value:f===""?void 0:f}:d)})});return!a||!a.Edit||!n?null:(0,Tu.jsx)(tp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Tu.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var l_=Math.pow(10,8)*24*60*60*1e3,QA=-l_,Ma=6048e5,op=864e5;var u_=3600;var np=u_*24,XA=np*7,c_=np*365.2425,d_=c_/12,ZA=d_*3,Ru=Symbol.for("constructDateFrom");function Ke(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Ru in e?e[Ru](t):e instanceof Date?new e.constructor(t):new Date(t)}function ge(e,t){return Ke(t||e,e)}function Fa(e,t,r){let o=ge(e,r?.in);return isNaN(t)?Ke(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function La(e,t,r){let o=ge(e,r?.in);if(isNaN(t))return Ke(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Ke(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var f_={};function no(){return f_}function Pr(e,t){let r=no(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=ge(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function ku(e){let t=ge(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function ip(e,...t){let r=Ke.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function Nu(e,t){let r=ge(e,t?.in);return r.setHours(0,0,0,0),r}function ap(e,t,r){let[o,n]=ip(r?.in,e,t),i=Nu(o),a=Nu(n),s=+i-ku(i),l=+a-ku(a);return Math.round((s-l)/op)}function sp(e,t){let r=Ba(e,t),o=Ke(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Ao(o)}function lp(e,t,r){return Fa(e,t*7,r)}function up(e,t,r){return La(e,t*12,r)}function cp(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function sn(e){return!(!cp(e)&&typeof e!="number"||isNaN(+ge(e)))}function dp(e,t){let r=ge(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function ja(e,t){let r=ge(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var m_={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},fp=(e,t,r)=>{let o,n=m_[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Ha(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var p_={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},v_={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},g_={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},mp={date:Ha({formats:p_,defaultWidth:"full"}),time:Ha({formats:v_,defaultWidth:"full"}),dateTime:Ha({formats:g_,defaultWidth:"full"})};var h_={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},pp=(e,t,r,o)=>h_[e];function ln(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var b_={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},x_={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},__={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},w_={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},y_={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},S_={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},C_=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},vp={ordinalNumber:C_,era:ln({values:b_,defaultWidth:"wide"}),quarter:ln({values:x_,defaultWidth:"wide",argumentCallback:e=>e-1}),month:ln({values:__,defaultWidth:"wide"}),day:ln({values:w_,defaultWidth:"wide"}),dayPeriod:ln({values:y_,defaultWidth:"wide",formattingValues:S_,defaultFormattingWidth:"wide"})};function un(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?P_(s,d=>d.test(a)):E_(s,d=>d.test(a)),u;u=e.valueCallback?e.valueCallback(l):l,u=r.valueCallback?r.valueCallback(u):u;let f=t.slice(a.length);return{value:u,rest:f}}}function E_(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function P_(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var O_=/^(\d+)(th|st|nd|rd)?/i,I_=/\d+/i,A_={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},V_={any:[/^b/i,/^(a|c)/i]},T_={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},R_={any:[/1/i,/2/i,/3/i,/4/i]},k_={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},N_={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},D_={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},M_={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},F_={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},L_={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},hp={ordinalNumber:gp({matchPattern:O_,parsePattern:I_,valueCallback:e=>parseInt(e,10)}),era:un({matchPatterns:A_,defaultMatchWidth:"wide",parsePatterns:V_,defaultParseWidth:"any"}),quarter:un({matchPatterns:T_,defaultMatchWidth:"wide",parsePatterns:R_,defaultParseWidth:"any",valueCallback:e=>e+1}),month:un({matchPatterns:k_,defaultMatchWidth:"wide",parsePatterns:N_,defaultParseWidth:"any"}),day:un({matchPatterns:D_,defaultMatchWidth:"wide",parsePatterns:M_,defaultParseWidth:"any"}),dayPeriod:un({matchPatterns:F_,defaultMatchWidth:"any",parsePatterns:L_,defaultParseWidth:"any"})};var Du={code:"en-US",formatDistance:fp,formatLong:mp,formatRelative:pp,localize:vp,match:hp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function bp(e,t){let r=ge(e,t?.in);return ap(r,ja(r))+1}function xp(e,t){let r=ge(e,t?.in),o=+Ao(r)-+sp(r);return Math.round(o/Ma)+1}function za(e,t){let r=ge(e,t?.in),o=r.getFullYear(),n=no(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ke(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Pr(a,t),l=Ke(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let u=Pr(l,t);return+r>=+s?o+1:+r>=+u?o:o-1}function _p(e,t){let r=no(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=za(e,t),i=Ke(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Pr(i,t)}function wp(e,t){let r=ge(e,t?.in),o=+Pr(r,t)-+_p(r,t);return Math.round(o/Ma)+1}function ce(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Or={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return ce(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ce(r+1,2)},d(e,t){return ce(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return ce(e.getHours()%12||12,t.length)},H(e,t){return ce(e.getHours(),t.length)},m(e,t){return ce(e.getMinutes(),t.length)},s(e,t){return ce(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ce(n,t.length)}};var cn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Mu={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Or.y(e,t)},Y:function(e,t,r,o){let n=za(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ce(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ce(i,t.length)},R:function(e,t){let r=Ba(e);return ce(r,t.length)},u:function(e,t){let r=e.getFullYear();return ce(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ce(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ce(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Or.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return ce(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=wp(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ce(n,t.length)},I:function(e,t,r){let o=xp(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ce(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Or.d(e,t)},D:function(e,t,r){let o=bp(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ce(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ce(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ce(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return ce(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=cn.noon:o===0?n=cn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=cn.evening:o>=12?n=cn.afternoon:o>=4?n=cn.morning:n=cn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Or.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Or.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Or.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Or.s(e,t)},S:function(e,t){return Or.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return Sp(o);case"XXXX":case"XX":return Vo(o);default:return Vo(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return Sp(o);case"xxxx":case"xx":return Vo(o);default:return Vo(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+yp(o,":");default:return"GMT"+Vo(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+yp(o,":");default:return"GMT"+Vo(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ce(o,t.length)},T:function(e,t,r){return ce(+e,t.length)}};function yp(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+ce(i,2)}function Sp(e,t){return e%60===0?(e>0?"-":"+")+ce(Math.abs(e)/60,2):Vo(e,t)}function Vo(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ce(Math.trunc(o/60),2),i=ce(o%60,2);return r+n+t+i}var Cp=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Ep=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},B_=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Cp(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",Cp(o,t)).replace("{{time}}",Ep(n,t))},Pp={p:Ep,P:B_};var j_=/^D+$/,H_=/^Y+$/,z_=["D","DD","YY","YYYY"];function Op(e){return j_.test(e)}function Ip(e){return H_.test(e)}function Ap(e,t,r){let o=W_(e,t,r);if(console.warn(o),z_.includes(e))throw new RangeError(o)}function W_(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var G_=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,q_=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Y_=/^'([^]*?)'?$/,U_=/''/g,$_=/[a-zA-Z]/;function ri(e,t,r){let o=no(),n=r?.locale??o.locale??Du,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=ge(e,r?.in);if(!sn(s))throw new RangeError("Invalid time value");let l=t.match(q_).map(f=>{let d=f[0];if(d==="p"||d==="P"){let m=Pp[d];return m(f,n.formatLong)}return f}).join("").match(G_).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let d=f[0];if(d==="'")return{isToken:!1,value:K_(f)};if(Mu[d])return{isToken:!0,value:f};if(d.match($_))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(f=>{if(!f.isToken)return f.value;let d=f.value;(!r?.useAdditionalWeekYearTokens&&Ip(d)||!r?.useAdditionalDayOfYearTokens&&Op(d))&&Ap(d,t,String(e));let m=Mu[d[0]];return m(s,d,n.localize,u)}).join("")}function K_(e){let t=e.match(Y_);return t?t[1].replace(U_,"'"):e}function To(e,t,r){return Fa(e,-t,r)}function Wa(e,t,r){return La(e,-t,r)}function Vp(e,t,r){return lp(e,-t,r)}function Ga(e,t,r){return up(e,-t,r)}var H=c(X(),1),Me=c(z(),1),Ct=c(Ro(),1);var Fu=c(R(),1),ze={Name:(0,Fu.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Fu.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Rp(e,t){switch(t){case"days":return To(new Date,e);case"weeks":return Vp(new Date,e);case"months":return Wa(new Date,e);case"years":return Ga(new Date,e);default:return new Date}}var kp={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},qa=[{name:Ie,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Ae,...kp},{name:ct,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),ze),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:dt,...kp},{name:ht,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),ze),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:bt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),ze),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Rp(r.value,r.unit),n=(0,Ct.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:Ot,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),ze),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Rp(r.value,r.unit);return(0,Ct.getDate)(t.getValue({item:e}))(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:Re,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Mr,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:Lr,label:(0,H.__)("Less than or equal"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:Br,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),ze),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:jr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:zr,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:Wr,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r);return(0,Ct.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:Qt,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Xt,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Zt,label:(0,H.__)("Starts with"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Gr,label:(0,H.__)("On"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:qr,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Me.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),ze),filter(e,t,r){if(r===void 0)return!0;let o=(0,Ct.getDate)(r),n=(0,Ct.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],ko=e=>qa.find(t=>t.name===e),Np=()=>qa.map(e=>e.name),Dp=e=>qa.filter(t=>t.selection==="single").some(t=>t.name===e),Mp=e=>qa.some(t=>t.name===e);var at=c(R(),1),Q_="Enter",X_=" ",Z_=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=ko(t?.operator);return o!==void 0?o.filterText(r,e):(0,Ir.sprintf)((0,Ir.__)("Unknown status for %1$s"),r.name)};function J_({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:ko(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,at.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,at.jsx)(Yt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,at.jsx)(Yt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Ir.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,u=n?[...(t.filters??[]).map(f=>{if(f.field===e.field){let d=ko(l)?.selection,m=ko(s)?.selection,p=d!==m||[d,m].includes("custom");return{...f,value:p?void 0:f.value,operator:s}}return f})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Fp({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,Ya.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(_=>_.field===i.field),u=[],f=(0,Ya.useMemo)(()=>{let _=r.find(y=>y.id===i.field);return _&&{..._,getValue:({item:y})=>y[_.id]}},[r,i.field]),{elements:d}=pt({elements:i.elements,getElements:i.getElements});if(d.length>0)u=d.filter(_=>i.singleSelection?_.value===l?.value:l?.value?.includes(_.value));else if(Array.isArray(l?.value)){let _=l.value.map(y=>f?.getValueFormatted({item:{[f.id]:y},field:f})||String(y));u=[{value:l.value,label:_}]}else if(typeof l?.value=="object")u=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let _=f!==void 0?f.getValueFormatted({item:{[f.id]:l.value},field:f}):String(l.value);u=[{value:l.value,label:_}]}let m=i.isPrimary,p=l?.isLocked,g=!p&&l?.value!==void 0,x=!p&&(!m||g);return(0,at.jsx)(Yt.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:_,onToggle:y})=>(0,at.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,at.jsx)(Yt.Tooltip,{text:(0,Ir.sprintf)((0,Ir.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,at.jsx)("div",{className:Y("dataviews-filters__summary-chip",{"has-reset":x,"has-values":g,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||y()},onKeyDown:w=>{!p&&[Q_,X_].includes(w.key)&&(y(),w.preventDefault())},"aria-disabled":p,"aria-pressed":_,"aria-expanded":_,ref:n,children:(0,at.jsx)(Z_,{activeElements:u,filterInView:l,filter:i})})}),x&&(0,at.jsx)(Yt.Tooltip,{text:m?(0,Ir.__)("Reset"):(0,Ir.__)("Remove"),placement:"top",children:(0,at.jsx)("button",{className:Y("dataviews-filters__summary-chip-remove",{"has-values":g}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(w=>w.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,at.jsx)(Yt.Icon,{icon:En})})})]}),renderContent:()=>(0,at.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,at.jsx)(J_,{...o}),o.filter.hasElements?(0,at.jsx)(Qm,{...o,filter:{...o.filter,elements:d}}):(0,at.jsx)(rp,{...o,fields:r})]})})}var Ua=c($(),1),Lp=c(X(),1),Bp=c(z(),1);var Ar=c(R(),1),{Menu:oi}=J(Ua.privateApis);function Lu({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Ar.jsxs)(oi,{children:[(0,Ar.jsx)(oi.TriggerButton,{...n}),(0,Ar.jsx)(oi.Popover,{children:i.map(a=>(0,Ar.jsx)(oi.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Ar.jsx)(oi.ItemLabel,{children:a.name})},a.field))})]})}function e0({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Ar.jsx)(Lu,{triggerProps:{render:(0,Ar.jsx)(Ua.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Lp.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var jp=(0,Bp.forwardRef)(e0);var Hp=c($(),1),zp=c(X(),1),Wp=c(R(),1);function Gp({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,Wp.jsx)(Hp.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,zp.__)("Reset")})}var qp=c(z(),1);function t0(e,t){return(0,qp.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>Dp(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&Mp(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var ni=t0;var ii=c(R(),1);function r0({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,dn.useContext)(U),a=(0,dn.useRef)(null),s=ni(t,r),l=(0,ii.jsx)(jp,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=s.filter(d=>d.isVisible);if(u.length===0)return null;let f=[...u.map(d=>(0,ii.jsx)(Fp,{filter:d,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},d.field)),l];return f.push((0,ii.jsx)(Gp,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,ii.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:f})}var ai=(0,dn.memo)(r0);var io=c(z(),1),Yp=c($(),1);var $a=c(X(),1);var sr=c(R(),1);function o0(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,io.useContext)(U),a=(0,io.useRef)(null),s=(0,io.useCallback)(p=>{r(p),i(!0)},[r,i]),u=!!e.filter(p=>p.isVisible).length;if(e.length===0)return null;let f={label:(0,$a.__)("Add filter"),"aria-expanded":!1,isPressed:!1},d={label:(0,$a._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=(0,sr.jsx)(Yp.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Pn,...u?d:f});return(0,sr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:u?(0,sr.jsx)(n0,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,sr.jsx)(Lu,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:m}})})}function n0({buttonRef:e,filtersCount:t,children:r}){return(0,io.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,sr.jsxs)(sr.Fragment,{children:[r,!!t&&(0,sr.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var Ka=o0;var Up=c(z(),1);var $p=c(R(),1);function i0(e){let{isShowingFilter:t}=(0,Up.useContext)(U);return t?(0,$p.jsx)(ai,{...e}):null}var Qa=i0;var Kp=c(z(),1),Qp=c(X(),1);var Bu=c(R(),1);function ju({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,view:s,onChangeView:l,selection:u,onChangeSelection:f,setOpenedFilter:d,onClickItem:m,isItemClickable:p,renderItemLink:g,defaultLayouts:x,empty:_=(0,Bu.jsx)("p",{children:(0,Qp.__)("No results")})}=(0,Kp.useContext)(U),y=Xr.find(w=>w.type===s.type&&x[w.type])?.component;return(0,Bu.jsx)(y,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,onChangeView:l,onChangeSelection:f,selection:u,setOpenedFilter:d,onClickItem:m,renderItemLink:g,isItemClickable:p,view:s,empty:_})}var Xp=c(z(),1);var si=c(R(),1),a0=[];function Hu(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=a0}=(0,Xp.useContext)(U),i=zo(n,o)&&[Lo,Ki].includes(e.type);return!t||!r||r<=1&&!i?null:!!t&&(0,si.jsxs)(F,{direction:"row",justify:"end",align:"center",className:"dataviews-footer",gap:"sm",children:[i&&(0,si.jsx)(Ji,{}),(0,si.jsx)(Ld,{})]})}var Zp=c(X(),1),Ut=c(z(),1),Jp=c($(),1),ev=c(Rt(),1);var tv=c(R(),1),s0=(0,Ut.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Ut.useContext)(U),[n,i,a]=(0,ev.useDebouncedInput)(r.search);(0,Ut.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,Ut.useRef)(o),l=(0,Ut.useRef)(r);(0,Ut.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,Ut.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let u=t||(0,Zp.__)("Search");return(0,tv.jsx)(Jp.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),zu=s0;var Ee=c($(),1),ao=c(X(),1),lr=c(z(),1);var Gu=c(ov(),1),lv=c(Rt(),1);var nv=c($(),1),Wu=c(X(),1),iv=c(z(),1);var av=c(R(),1);function sv(){let e=(0,iv.useContext)(U),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,av.jsx)(nv.ToggleControl,{label:(0,Wu.__)("Enable infinite scroll"),help:(0,Wu.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var ie=c(R(),1),{Menu:li}=J(Ee.privateApis),l0={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function qu(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,lr.useContext)(U),o=Object.keys(r);if(o.length<=1)return null;let n=Xr.find(i=>e.type===i.type);return(0,ie.jsxs)(li,{children:[(0,ie.jsx)(li.TriggerButton,{render:(0,ie.jsx)(Ee.Button,{size:"compact",icon:n?.icon,label:(0,ao.__)("Layout")})}),(0,ie.jsx)(li.Popover,{children:o.map(i=>{let a=Xr.find(s=>s.type===i);return a?(0,ie.jsx)(li.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,Gu.default)("Invalid dataview")},children:(0,ie.jsx)(li.ItemLabel,{children:a.label})},i):null})})]})}function u0(){let{view:e,fields:t,onChangeView:r}=(0,lr.useContext)(U),o=(0,lr.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,ie.jsx)(Ee.SelectControl,{__next40pxDefaultSize:!0,label:(0,ao.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function c0(){let{view:e,fields:t,onChangeView:r}=(0,lr.useContext)(U);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,ie.jsx)(Ee.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,ao.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,Gu.default)("Invalid direction")},children:Yi.map(i=>(0,ie.jsx)(Ee.__experimentalToggleGroupControlOptionIcon,{value:i,icon:Qc[i],label:$i[i]},i))})}function d0(){let{view:e,config:t,onChangeView:r}=(0,lr.useContext)(U),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,ie.jsx)(Ee.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,ao.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,ie.jsx)(Ee.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function f0({title:e,description:t,children:r}){return(0,ie.jsxs)(Ee.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,ie.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,ie.jsx)(Ee.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,ie.jsx)(Ee.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,ie.jsx)(Ee.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:r})]})}function Yu(){let{view:e}=(0,lr.useContext)(U),t=(0,lv.useInstanceId)(uv,"dataviews-view-config-dropdown"),r=Xr.find(o=>o.type===e.type);return(0,ie.jsx)(Ee.Dropdown,{expandOnMobile:!0,popoverProps:{...l0,id:t},renderToggle:({onToggle:o,isOpen:n})=>(0,ie.jsx)(Ee.Button,{size:"compact",icon:tl,label:(0,ao._x)("View options","View is used as a noun"),onClick:o,"aria-expanded":n?"true":"false","aria-controls":t}),renderContent:()=>(0,ie.jsx)(Ee.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,ie.jsx)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:(0,ie.jsxs)(f0,{title:(0,ao.__)("Appearance"),children:[(0,ie.jsxs)(F,{direction:"row",gap:"sm",className:"is-divided-in-two",children:[(0,ie.jsx)(u0,{}),(0,ie.jsx)(c0,{})]}),!!r?.viewConfigOptions&&(0,ie.jsx)(r.viewConfigOptions,{}),(0,ie.jsx)(sv,{}),(0,ie.jsx)(d0,{}),(0,ie.jsx)(ra,{})]})})})})}function uv(){return(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(qu,{}),(0,ie.jsx)(Yu,{})]})}var m0=(0,lr.memo)(uv),cv=m0;var dv=c($(),1),fv=c(z(),1);function _e(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var mv=c(R(),1),{ValidatedCheckboxControl:p0}=J(dv.privateApis);function pv({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:u,isValid:f}=e,d=(0,fv.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,mv.jsx)(p0,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:_e(f,i),hidden:o,label:l,help:u,checked:a({item:r}),onChange:d})}var Xa=c($(),1),vv=c(z(),1);var Uu=c(R(),1),{ValidatedComboboxControl:v0}=J(Xa.privateApis);function gv({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:u,isValid:f}=t,d=l({item:e})??"",m=(0,vv.useCallback)(x=>r(u({item:e,value:x??""})),[e,r,u]),{elements:p,isLoading:g}=pt({elements:t.elements,getElements:t.getElements});return g?(0,Uu.jsx)(Xa.Spinner,{}):(0,Uu.jsx)(v0,{required:!!t.isValid?.required,customValidity:_e(f,n),label:i,value:d,help:a,placeholder:s,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var es=c($(),1),Wt=c(z(),1),Ja=c(X(),1),Ku=c(Ro(),1);var mn=c($(),1),$u=c(z(),1),ur=c(X(),1);var fn=c(R(),1),g0={[bt]:[{value:"days",label:(0,ur.__)("Days")},{value:"weeks",label:(0,ur.__)("Weeks")},{value:"months",label:(0,ur.__)("Months")},{value:"years",label:(0,ur.__)("Years")}],[Ot]:[{value:"days",label:(0,ur.__)("Days ago")},{value:"weeks",label:(0,ur.__)("Weeks ago")},{value:"months",label:(0,ur.__)("Months ago")},{value:"years",label:(0,ur.__)("Years ago")}]};function Za({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=g0[i===bt?"inThePast":"over"],{id:s,label:l,getValue:u,setValue:f}=r,d=u({item:t}),{value:m="",unit:p=a[0].value}=d&&typeof d=="object"?d:{},g=(0,$u.useCallback)(_=>o(f({item:t,value:{value:Number(_),unit:p}})),[o,f,t,p]),x=(0,$u.useCallback)(_=>o(f({item:t,value:{value:m,unit:_}})),[o,f,t,m]);return(0,fn.jsx)(mn.BaseControl,{id:s,className:Y(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,fn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,fn.jsx)(mn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:g}),(0,fn.jsx)(mn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,ur.__)("Unit"),value:p,options:a,onChange:x,hideLabelFromVision:!0})]})})}var hv=c(Ro(),1);function pn(e){if(!e)return null;let t=(0,hv.getDate)(e);return t&&sn(t)?t:null}var so=c(R(),1),{DateCalendar:h0,ValidatedInputControl:b0}=J(es.privateApis),x0=e=>e?typeof e=="string"?e:ri(e,"yyyy-MM-dd'T'HH:mm"):"";function _0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:u,getValue:f,isValid:d}=t,m=f({item:e}),p=typeof m=="string"?m:void 0,[g,x]=(0,Wt.useState)(()=>pn(p)||new Date),_=(0,Wt.useRef)(null),y=(0,Wt.useRef)(),w=(0,Wt.useRef)(null),E=(0,Wt.useCallback)(k=>r(u({item:e,value:k})),[e,r,u]);(0,Wt.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]);let T=(0,Wt.useCallback)(k=>{let M;if(k){let A=k;if(p){let v=pn(p);v&&(A=new Date(k),A.setHours(v.getHours()),A.setMinutes(v.getMinutes()))}M=A.toISOString(),E(M),y.current&&clearTimeout(y.current)}else E(void 0);w.current=_.current&&_.current.ownerDocument.activeElement,y.current=setTimeout(()=>{_.current&&(_.current.focus(),_.current.blur(),E(M),w.current&&w.current instanceof HTMLElement&&w.current.focus())},0)},[E,p]),I=(0,Wt.useCallback)(k=>{if(k){let M=new Date(k);E(M.toISOString());let A=pn(M.toISOString());A&&x(A)}else E(void 0)},[E]),{format:V}=t,D=V.weekStartsOn??(0,Ku.getSettings)().l10n.startOfWeek,{timezone:{string:C}}=(0,Ku.getSettings)(),S=s;return d?.required&&!n&&!o?S=`${s} (${(0,Ja.__)("Required")})`:!d?.required&&n&&!o&&(S=`${s} (${(0,Ja.__)("Optional")})`),(0,so.jsx)(es.BaseControl,{id:a,label:S,help:l,hideLabelFromVision:o,children:(0,so.jsxs)(F,{direction:"column",gap:"lg",children:[(0,so.jsx)(h0,{style:{width:"100%"},selected:p&&pn(p)||void 0,onSelect:T,month:g,onMonthChange:x,timeZone:C||void 0,weekStartsOn:D}),(0,so.jsx)(b0,{ref:_,__next40pxDefaultSize:!0,required:!!d?.required,customValidity:_e(d,i),type:"datetime-local",label:(0,Ja.__)("Date time"),hideLabelFromVision:!0,value:p?x0(pn(p)||void 0):"",onChange:I})]})})}function bv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Ot?(0,so.jsx)(Za,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,so.jsx)(_0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var gt=c($(),1),ve=c(z(),1),Qe=c(X(),1),vt=c(Ro(),1);var we=c(R(),1),{DateCalendar:w0,DateRangeCalendar:y0}=J(gt.privateApis),S0=[{id:"today",label:(0,Qe.__)("Today"),getValue:()=>(0,vt.getDate)(null)},{id:"yesterday",label:(0,Qe.__)("Yesterday"),getValue:()=>{let e=(0,vt.getDate)(null);return To(e,1)}},{id:"past-week",label:(0,Qe.__)("Past week"),getValue:()=>{let e=(0,vt.getDate)(null);return To(e,7)}},{id:"past-month",label:(0,Qe.__)("Past month"),getValue:()=>{let e=(0,vt.getDate)(null);return Wa(e,1)}}],C0=[{id:"last-7-days",label:(0,Qe.__)("Last 7 days"),getValue:()=>{let e=(0,vt.getDate)(null);return[To(e,7),e]}},{id:"last-30-days",label:(0,Qe.__)("Last 30 days"),getValue:()=>{let e=(0,vt.getDate)(null);return[To(e,30),e]}},{id:"month-to-date",label:(0,Qe.__)("Month to date"),getValue:()=>{let e=(0,vt.getDate)(null);return[dp(e),e]}},{id:"last-year",label:(0,Qe.__)("Last year"),getValue:()=>{let e=(0,vt.getDate)(null);return[Ga(e,1),e]}},{id:"year-to-date",label:(0,Qe.__)("Year to date"),getValue:()=>{let e=(0,vt.getDate)(null);return[ja(e),e]}}],vn=e=>{if(!e)return null;let t=(0,vt.getDate)(e);return t&&sn(t)?t:null},Qu=e=>e?typeof e=="string"?e:ri(e,"yyyy-MM-dd"):"";function xv({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,ve.useState)(void 0),u=(0,ve.useCallback)(()=>{let d=Array.isArray(r)?r:[r];for(let m of d){let p=m.current;if(p&&!p.validity.valid){l({type:"invalid",message:p.validationMessage});return}}l(void 0)},[r]);return(0,ve.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=t?_e(a,t):void 0;for(let p of d){let g=p.current;g&&g.setCustomValidity(m?.type==="invalid"&&m.message?m.message:"")}},[r,a,t]),(0,ve.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=p=>{p.preventDefault(),n(!0)};for(let p of d)p.current?.addEventListener("invalid",m);return()=>{for(let p of d)p.current?.removeEventListener("invalid",m)}},[r,n]),(0,ve.useEffect)(()=>{if(!o)return;let d=t?_e(a,t):void 0;d?l(d):u()},[o,a,t,u]),(0,we.jsxs)("div",{onBlur:d=>{o||(!d.relatedTarget||!d.currentTarget.contains(d.relatedTarget))&&n(!0)},children:[i,(0,we.jsx)("div",{"aria-live":"polite",children:s&&(0,we.jsxs)("p",{className:Y("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,we.jsx)(gt.Icon,{className:"components-validated-control__indicator-icon",icon:il,size:16,fill:"currentColor"}),s.message]})})]})}function E0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:u,isValid:f,format:d}=t,[m,p]=(0,ve.useState)(null),g=d.weekStartsOn??(0,vt.getSettings)().l10n.startOfWeek,x=u({item:e}),_=typeof x=="string"?x:void 0,[y,w]=(0,ve.useState)(()=>vn(_)||new Date),[E,T]=(0,ve.useState)(!1),I=(0,ve.useRef)(null),V=(0,ve.useCallback)(A=>r(l({item:e,value:A})),[e,r,l]),D=(0,ve.useCallback)(A=>{let v=A?ri(A,"yyyy-MM-dd"):void 0;V(v),p(null),T(!0)},[V]),C=(0,ve.useCallback)(A=>{let v=A.getValue(),h=Qu(v);w(v),V(h),p(A.id),T(!0)},[V]),S=(0,ve.useCallback)(A=>{if(V(A),A){let v=vn(A);v&&w(v)}p(null),T(!0)},[V]),{timezone:{string:k}}=(0,vt.getSettings)(),M=s;return f?.required&&!n?M=`${s} (${(0,Qe.__)("Required")})`:!f?.required&&n&&(M=`${s} (${(0,Qe.__)("Optional")})`),(0,we.jsx)(xv,{field:t,validity:i,inputRefs:I,isTouched:E,setIsTouched:T,children:(0,we.jsx)(gt.BaseControl,{id:a,className:"dataviews-controls__date",label:M,hideLabelFromVision:o,children:(0,we.jsxs)(F,{direction:"column",gap:"lg",children:[(0,we.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[S0.map(A=>{let v=m===A.id;return(0,we.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:v,size:"small",onClick:()=>C(A),children:A.label},A.id)}),(0,we.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Qe.__)("Custom")})]}),(0,we.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:I,type:"date",label:(0,Qe.__)("Date"),hideLabelFromVision:!0,value:_,onChange:S,required:!!t.isValid?.required}),(0,we.jsx)(w0,{style:{width:"100%"},selected:_&&vn(_)||void 0,onSelect:D,month:y,onMonthChange:w,timeZone:k||void 0,weekStartsOn:g})]})})})}function P0({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:u,format:f}=t,d,m=l({item:e});Array.isArray(m)&&m.length===2&&m.every(h=>typeof h=="string")&&(d=m);let p=f.weekStartsOn??(0,vt.getSettings)().l10n.startOfWeek,g=(0,ve.useCallback)(h=>{r(u({item:e,value:h}))},[e,r,u]),[x,_]=(0,ve.useState)(null),y=(0,ve.useMemo)(()=>{if(!d)return{from:void 0,to:void 0};let[h,O]=d;return{from:vn(h)||void 0,to:vn(O)||void 0}},[d]),[w,E]=(0,ve.useState)(()=>y.from||new Date),[T,I]=(0,ve.useState)(!1),V=(0,ve.useRef)(null),D=(0,ve.useRef)(null),C=(0,ve.useCallback)((h,O)=>{h&&O?g([Qu(h),Qu(O)]):!h&&!O&&g(void 0)},[g]),S=(0,ve.useCallback)(h=>{C(h?.from,h?.to),_(null),I(!0)},[C]),k=(0,ve.useCallback)(h=>{let[O,b]=h.getValue();E(O),C(O,b),_(h.id),I(!0)},[C]),M=(0,ve.useCallback)((h,O)=>{let[b,N]=d||[void 0,void 0];if(C(h==="from"?O:b,h==="to"?O:N),O){let G=vn(O);G&&E(G)}_(null),I(!0)},[d,C]),{timezone:A}=(0,vt.getSettings)(),v=s;return t.isValid?.required&&!n?v=`${s} (${(0,Qe.__)("Required")})`:!t.isValid?.required&&n&&(v=`${s} (${(0,Qe.__)("Optional")})`),(0,we.jsx)(xv,{field:t,validity:i,inputRefs:[V,D],isTouched:T,setIsTouched:I,children:(0,we.jsx)(gt.BaseControl,{id:a,className:"dataviews-controls__date",label:v,hideLabelFromVision:o,children:(0,we.jsxs)(F,{direction:"column",gap:"lg",children:[(0,we.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[C0.map(h=>{let O=x===h.id;return(0,we.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:O,size:"small",onClick:()=>k(h),children:h.label},h.id)}),(0,we.jsx)(gt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!x,size:"small",accessibleWhenDisabled:!1,disabled:!!x,children:(0,Qe.__)("Custom")})]}),(0,we.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,we.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:V,type:"date",label:(0,Qe.__)("From"),hideLabelFromVision:!0,value:d?.[0],onChange:h=>M("from",h),required:!!t.isValid?.required}),(0,we.jsx)(gt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,Qe.__)("To"),hideLabelFromVision:!0,value:d?.[1],onChange:h=>M("to",h),required:!!t.isValid?.required})]}),(0,we.jsx)(y0,{style:{width:"100%"},selected:y,onSelect:S,month:w,onMonthChange:E,timeZone:A.string||void 0,weekStartsOn:p})]})})})}function _v({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===Ot?(0,we.jsx)(Za,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===ht?(0,we.jsx)(P0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,we.jsx)(E0,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var rs=c($(),1);var wv=c($(),1),yv=c(z(),1);var Sv=c(R(),1),{ValidatedInputControl:O0}=J(wv.privateApis);function cr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:u,placeholder:f,description:d,getValue:m,setValue:p,isValid:g}=t,x=m({item:e}),_=(0,yv.useCallback)(y=>r(p({item:e,value:y})),[e,p,r]);return(0,Sv.jsx)(O0,{required:!!g.required,markWhenOptional:n,customValidity:_e(g,l),label:u,placeholder:f,value:x??"",help:d,onChange:_,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:g.pattern?g.pattern.constraint:void 0,minLength:g.minLength?g.minLength.constraint:void 0,maxLength:g.maxLength?g.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var ts=c(R(),1);function Cv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ts.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,ts.jsx)(rs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ts.jsx)(rs.Icon,{icon:ol})})})}var ns=c($(),1);var os=c(R(),1);function Ev({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,os.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,os.jsx)(ns.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,os.jsx)(ns.Icon,{icon:pl})})})}var as=c($(),1);var is=c(R(),1);function Pv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,is.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,is.jsx)(as.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,is.jsx)(as.Icon,{icon:fl})})})}var Vr=c($(),1),ui=c(z(),1),ss=c(X(),1);var lo=c(R(),1),{ValidatedNumberControl:I0}=J(Vr.privateApis);function Ov(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function A0({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,ui.useCallback)(l=>t([Ov(l),i]),[t,i]),s=(0,ui.useCallback)(l=>t([n,Ov(l)]),[t,n]);return(0,lo.jsx)(Vr.BaseControl,{help:(0,ss.__)("The max. value must be greater than the min. value."),children:(0,lo.jsxs)(Vr.Flex,{direction:"row",gap:4,children:[(0,lo.jsx)(Vr.__experimentalNumberControl,{label:(0,ss.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,lo.jsx)(Vr.__experimentalNumberControl,{label:(0,ss.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function ls({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:u,description:f,getValue:d,setValue:m,isValid:p}=t,g=d({item:e})??"",x=(0,ui.useCallback)(y=>{r(m({item:e,value:["",void 0].includes(y)?void 0:Number(y)}))},[e,r,m]),_=(0,ui.useCallback)(y=>{r(m({item:e,value:y}))},[e,r,m]);if(i===ht){let y=["",""];return Array.isArray(g)&&g.length===2&&g.every(w=>typeof w=="number"||w==="")&&(y=g),(0,lo.jsx)(A0,{value:y,onChange:_,hideLabelFromVision:o,step:l})}return(0,lo.jsx)(I0,{required:!!p.required,markWhenOptional:n,customValidity:_e(p,a),label:u,help:f,value:g,onChange:x,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var Iv=c(R(),1);function Av(e){return(0,Iv.jsx)(ls,{...e})}var Vv=c(R(),1);function Tv(e){return(0,Vv.jsx)(ls,{...e})}var us=c($(),1),Rv=c(z(),1);var Xu=c(R(),1),{ValidatedRadioControl:V0}=J(us.privateApis);function kv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:f}=t,{elements:d,isLoading:m}=pt({elements:t.elements,getElements:t.getElements}),p=l({item:e}),g=(0,Rv.useCallback)(x=>r(u({item:e,value:x})),[e,r,u]);return m?(0,Xu.jsx)(us.Spinner,{}):(0,Xu.jsx)(V0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:_e(f,i),label:a,help:s,onChange:g,options:d,selected:p,hideLabelFromVision:o})}var cs=c($(),1),Nv=c(z(),1);var Zu=c(R(),1),{ValidatedSelectControl:T0}=J(cs.privateApis);function Dv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:u,setValue:f,isValid:d}=t,m=a==="array",p=u({item:e})??(m?[]:""),g=(0,Nv.useCallback)(y=>r(f({item:e,value:y})),[e,r,f]),{elements:x,isLoading:_}=pt({elements:t.elements,getElements:t.getElements});return _?(0,Zu.jsx)(cs.Spinner,{}):(0,Zu.jsx)(T0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:_e(d,i),label:s,value:p,help:l,options:x,onChange:g,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var Ju=c(z(),1);var Mv=c(R(),1);function Fv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,Mv.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,Ju.createElement)(s):void 0,suffix:l?(0,Ju.createElement)(l):void 0})}var Lv=c($(),1),Bv=c(z(),1);var jv=c(R(),1),{ValidatedToggleControl:R0}=J(Lv.privateApis);function Hv({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:u,isValid:f}=e,d=(0,Bv.useCallback)(()=>{t(u({item:r,value:!l({item:r})}))},[t,u,r,l]);return(0,jv.jsx)(R0,{required:!!f.required,markWhenOptional:n,customValidity:_e(f,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:d})}var zv=c($(),1),Wv=c(z(),1);var Gv=c(R(),1),{ValidatedTextareaControl:k0}=J(zv.privateApis);function qv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:u,description:f,setValue:d,isValid:m}=t,p=t.getValue({item:e}),g=(0,Wv.useCallback)(x=>r(d({item:e,value:x})),[e,r,d]);return(0,Gv.jsx)(k0,{required:!!m.required,markWhenOptional:n,customValidity:_e(m,a),label:l,placeholder:u,value:p??"",help:f,onChange:g,rows:s,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var gn=c($(),1),Yv=c(z(),1);var ds=c(R(),1),{ValidatedToggleGroupControl:N0}=J(gn.privateApis);function Uv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,u=a({item:e}),f=(0,Yv.useCallback)(g=>r(s({item:e,value:g})),[e,r,s]),{elements:d,isLoading:m}=pt({elements:t.elements,getElements:t.getElements});if(m)return(0,ds.jsx)(gn.Spinner,{});if(d.length===0)return null;let p=d.find(g=>g.value===u);return(0,ds.jsx)(N0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:_e(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:f,value:u,hideLabelFromVision:o,children:d.map(g=>(0,ds.jsx)(gn.__experimentalToggleGroupControlOption,{label:g.label,value:g.value},g.value))})}var fs=c($(),1),ms=c(z(),1);var ci=c(R(),1),{ValidatedFormTokenField:D0}=J(fs.privateApis);function $v({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:u,isValid:f}=t,d=l({item:e}),{elements:m,isLoading:p}=pt({elements:t.elements,getElements:t.getElements}),g=(0,ms.useMemo)(()=>Array.isArray(d)?d.map(_=>m?.find(w=>w.value===_)||{value:_,label:_}):[],[d,m]),x=(0,ms.useCallback)(_=>{let y=_.map(w=>typeof w=="object"&&"value"in w?w.value:w);r(u({item:e,value:y}))},[r,u,e]);return p?(0,ci.jsx)(fs.Spinner,{}):(0,ci.jsx)(D0,{required:!!f?.required,markWhenOptional:n,customValidity:_e(f,i),label:o?void 0:a,value:g,onChange:x,placeholder:s,suggestions:m?.map(_=>_.value),__experimentalValidateInput:_=>t.isValid?.elements&&m?m.some(y=>y.value===_||y.label===_):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:_=>typeof _=="object"&&"label"in _?_.label:typeof _=="string"&&m&&m.find(w=>w.value===_)?.label||_,__experimentalRenderItem:({item:_})=>{if(typeof _=="string"&&m){let y=m.find(w=>w.value===_);return(0,ci.jsx)("span",{children:y?.label||_})}return(0,ci.jsx)("span",{children:_})}})}var M0={grad:.9,turn:360,rad:360/(2*Math.PI)},Tr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},tt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},Gt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},og=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Kv=function(e){return{r:Gt(e.r,0,255),g:Gt(e.g,0,255),b:Gt(e.b,0,255),a:Gt(e.a)}},ec=function(e){return{r:tt(e.r),g:tt(e.g),b:tt(e.b),a:tt(e.a,3)}},F0=/^#([0-9a-f]{3,8})$/i,ps=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},ng=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},ig=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),u=i%6;return{r:255*[o,s,a,a,l,o][u],g:255*[l,o,o,s,a,a][u],b:255*[a,a,l,o,o,s][u],a:n}},Qv=function(e){return{h:og(e.h),s:Gt(e.s,0,100),l:Gt(e.l,0,100),a:Gt(e.a)}},Xv=function(e){return{h:tt(e.h),s:tt(e.s),l:tt(e.l),a:tt(e.a,3)}},Zv=function(e){return ig((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},di=function(e){return{h:(t=ng(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},L0=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,B0=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,j0=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,H0=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Jv={string:[[function(e){var t=F0.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?tt(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?tt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=j0.exec(e)||H0.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Kv({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=L0.exec(e)||B0.exec(e);if(!t)return null;var r,o,n=Qv({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(M0[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Zv(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return Tr(t)&&Tr(r)&&Tr(o)?Kv({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!Tr(t)||!Tr(r)||!Tr(o))return null;var a=Qv({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return Zv(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Tr(t)||!Tr(r)||!Tr(o))return null;var a=(function(s){return{h:og(s.h),s:Gt(s.s,0,100),v:Gt(s.v,0,100),a:Gt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return ig(a)},"hsv"]]},eg=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=ec(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?ps(tt(255*i)):"","#"+ps(r)+ps(o)+ps(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return ec(this.rgba)},e.prototype.toRgbString=function(){return t=ec(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return Xv(di(this.rgba))},e.prototype.toHslString=function(){return t=Xv(di(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=ng(this.rgba),{h:tt(t.h),s:tt(t.s),v:tt(t.v),a:tt(t.a,3)};var t},e.prototype.invert=function(){return st({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),st(tc(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),st(tc(this.rgba,-t))},e.prototype.grayscale=function(){return st(tc(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),st(tg(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),st(tg(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"?st({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):tt(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=di(this.rgba);return typeof t=="number"?st({h:t,s:r.s,l:r.l,a:r.a}):tt(r.h)},e.prototype.isEqual=function(t){return this.toHex()===st(t).toHex()},e})(),st=function(e){return e instanceof rg?e:new rg(e)};var hn=c($(),1),oc=c(z(),1);var uo=c(R(),1),{ValidatedInputControl:W0,Picker:G0}=J(hn.privateApis),q0=({color:e,onColorChange:t})=>{let r=e&&st(e).isValid()?e:"#ffffff";return(0,uo.jsx)(hn.Dropdown,{renderToggle:({onToggle:o,isOpen:n})=>(0,uo.jsx)(hn.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,uo.jsx)("button",{type:"button",onClick:o,style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",cursor:"pointer",outline:n?"2px solid #007cba":"none",outlineOffset:"2px",display:"flex",alignItems:"center",justifyContent:"center",padding:0,margin:0},"aria-label":"Open color picker"})}),renderContent:()=>(0,uo.jsx)("div",{style:{padding:"16px"},children:(0,uo.jsx)(G0,{color:st(r),onChange:t,enableAlpha:!0})})})};function ag({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:u,isValid:f}=t,d=t.getValue({item:e})||"",m=(0,oc.useCallback)(g=>{r(u({item:e,value:g.toHex()}))},[e,r,u]),p=(0,oc.useCallback)(g=>{r(u({item:e,value:g||""}))},[e,r,u]);return(0,uo.jsx)(W0,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:_e(f,i),label:a,placeholder:s,value:d,help:l,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,uo.jsx)(q0,{color:d,onColorChange:m})})}var gs=c($(),1),hs=c(z(),1),nc=c(X(),1);var vs=c(R(),1);function sg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,hs.useState)(!1),l=(0,hs.useCallback)(()=>{s(u=>!u)},[]);return(0,vs.jsx)(cr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,vs.jsx)(gs.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,vs.jsx)(gs.Button,{icon:a?In:Sl,onClick:l,size:"small",label:a?(0,nc.__)("Hide password"):(0,nc.__)("Show password")})})})}function bs(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var ug=c(R(),1),lg={array:$v,checkbox:pv,color:ag,combobox:gv,datetime:bv,date:_v,email:Cv,telephone:Ev,url:Pv,integer:Av,number:Tv,password:sg,radio:kv,select:Dv,text:Fv,toggle:Hv,textarea:qv,toggleGroup:Uv};function Y0(e){return e&&typeof e=="object"&&typeof e.control=="string"}function U0(e){let{control:t,...r}=e,o=xs(t);return o===null?null:function(i){return(0,ug.jsx)(o,{...i,config:r})}}function cg(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?xs(e.Edit):Y0(e.Edit)?U0(e.Edit):bs(e)&&e.type!=="array"?xs("select"):t===null?null:xs(t)}function xs(e){return Object.keys(lg).includes(e)?lg[e]:null}function $0(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var dg=$0;var K0=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},fg=K0;var Q0=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},mg=Q0;var vg=c(X(),1);function _s({item:e,field:t}){let{elements:r,isLoading:o}=pt({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var pg=c(R(),1);function Fe({item:e,field:t}){return t.hasElements?(0,pg.jsx)(_s,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var dr=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function Le(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function fr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function mr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function pr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Ce(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function X0({item:e,field:t}){return t.getValue({item:e})}var Et=X0;var Z0=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function J0(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Z0.test(r)?(0,vg.__)("Value must be a valid email address."):null}var gg={type:"email",render:Fe,Edit:"email",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Te,Re,Qt,Xt,Zt,Ie,Ae,ct,dt],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:fr,maxLength:mr,elements:Ce,custom:J0}};var hg=c(X(),1);var bn=(e,t,r)=>r==="asc"?e-t:t-e;function ws(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function ys(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var bg={separatorThousand:","};function ew({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=bg:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function tw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,hg.__)("Value must be an integer."):null}var xg={type:"integer",render:Fe,Edit:"integer",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re,Mr,Fr,Lr,Br,ht],validOperators:[Te,Re,Mr,Fr,Lr,Br,ht,Ie,Ae,ct,dt],format:bg,getValueFormatted:ew,validate:{required:Le,min:ws,max:ys,elements:Ce,custom:tw}};var _g=c(X(),1);var wg={separatorThousand:",",separatorDecimal:".",decimals:2};function rw({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=wg:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,u]=s.split("."),f=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?f:f+i+u}function ow(e){return e===""||e===void 0||e===null}function nw(e,t){let r=t.getValue({item:e});return!ow(r)&&!Number.isFinite(r)?(0,_g.__)("Value must be a number."):null}var yg={type:"number",render:Fe,Edit:"number",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re,Mr,Fr,Lr,Br,ht],validOperators:[Te,Re,Mr,Fr,Lr,Br,ht,Ie,Ae,ct,dt],format:wg,getValueFormatted:rw,validate:{required:Le,min:ws,max:ys,elements:Ce,custom:nw}};var Sg={type:"text",render:Fe,Edit:"text",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Te,Re,Qt,Xt,Zt,Ie,Ae,ct,dt],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:fr,maxLength:mr,elements:Ce}};var No=c(Ro(),1);var Cg={datetime:(0,No.getSettings)().formats.datetime,weekStartsOn:(0,No.getSettings)().l10n.startOfWeek};function iw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=Cg:o=t.format,(0,No.dateI18n)(o.datetime,(0,No.getDate)(r))}var aw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Eg={type:"datetime",render:Fe,Edit:"datetime",sort:aw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Gr,qr,jr,Hr,zr,Wr,bt,Ot],validOperators:[Gr,qr,jr,Hr,zr,Wr,bt,Ot],format:Cg,getValueFormatted:iw,validate:{required:Le,elements:Ce}};var Do=c(Ro(),1);var Pg={date:(0,Do.getSettings)().formats.date,weekStartsOn:(0,Do.getSettings)().l10n.startOfWeek};function sw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Pg:o=t.format,(0,Do.dateI18n)(o.date,(0,Do.getDate)(r))}var lw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Og={type:"date",render:Fe,Edit:"date",sort:lw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Gr,qr,jr,Hr,zr,Wr,bt,Ot,ht],validOperators:[Gr,qr,jr,Hr,zr,Wr,bt,Ot,ht],format:Pg,getValueFormatted:sw,validate:{required:Le,elements:Ce}};var Ss=c(X(),1);function Ig(e,t){return t.getValue({item:e})===!0}function uw({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,Ss.__)("True"):r===!1?(0,Ss.__)("False"):""}function cw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,Ss.__)("Value must be true, false, or undefined"):null}var dw=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},Ag={type:"boolean",render:Fe,Edit:"checkbox",sort:dw,validate:{required:Ig,elements:Ce,custom:cw},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re],validOperators:[Te,Re],format:{},getValueFormatted:uw};var Vg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Et,validate:{}};var ic=c(X(),1);function Tg(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Rg({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function fw({item:e,field:t}){return Rg({item:e,field:t})}function mw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,ic.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,ic.__)("Every value must be a string.")}var pw=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},kg={type:"array",render:fw,Edit:"array",sort:pw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Ie,Ae,ct,dt],format:{},getValueFormatted:Rg,validate:{required:Tg,elements:Ce,custom:mw}};function vw({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Ng={type:"password",render:Fe,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:vw,validate:{required:Le,pattern:pr,minLength:fr,maxLength:mr,elements:Ce}};var Dg={type:"telephone",render:Fe,Edit:"telephone",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Te,Re,Qt,Xt,Zt,Ie,Ae,ct,dt],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:fr,maxLength:mr,elements:Ce}};var Mg=c(X(),1);var xn=c(R(),1);function gw({item:e,field:t}){if(t.hasElements)return(0,xn.jsx)(_s,{item:e,field:t});let r=Et({item:e,field:t});return!r||!st(r).isValid()?r:(0,xn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,xn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,xn.jsx)("span",{children:r})]})}function hw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!st(r).isValid()?(0,Mg.__)("Value must be a valid color."):null}var bw=(e,t,r)=>{let o=st(e),n=st(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},Fg={type:"color",render:gw,Edit:"color",sort:bw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Te,Re,Ie,Ae],format:{},getValueFormatted:Et,validate:{required:Le,elements:Ce,custom:hw}};var Lg={type:"url",render:Fe,Edit:"url",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ie,Ae],validOperators:[Te,Re,Qt,Xt,Zt,Ie,Ae,ct,dt],format:{},getValueFormatted:Et,validate:{required:Le,pattern:pr,minLength:fr,maxLength:mr,elements:Ce}};var xw=(e,t,r)=>typeof e=="number"&&typeof t=="number"?bn(e,t,r):dr(e,t,r),Bg={render:Fe,Edit:null,sort:xw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Re],validOperators:Np(),format:{},getValueFormatted:Et,validate:{required:Le,elements:Ce}};function jg(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let u=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:u}}function Hg(e){return e.validOperators.reduce((t,r)=>{let o=ko(r);return o?.filter&&(t[r]=o.filter),t},{})}function _w(e,t){return{...t.format,...e.format}}var zg=_w;function ww(e){let t=[gg,xg,yg,Sg,Eg,Og,Ag,Vg,kg,Ng,Dg,Fg,Lg].find(r=>r?.type===e);return t||Bg}function Wg(e){return e.map(t=>{let r=ww(t.type),o=t.getValue||fg(t.id),n=function(i,a,s){let l=o({item:i}),u=o({item:a});return t.sort?t.sort(l,u,s):r.sort(l,u,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||mg(t.id),elements:t.elements,getElements:t.getElements,hasElements:bs(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:cg(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:jg(t,r),filterBy:dg(t,r.defaultOperators,r.validOperators),filter:Hg(r),format:zg(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var lt=c(R(),1),yw=e=>e.id,Sw=()=>!0,Cw=[],Ew=Xr.filter(e=>!e.isPicker);function Pw({header:e,search:t=!0,searchLabel:r=void 0}){return(0,lt.jsxs)(lt.Fragment,{children:[(0,lt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,lt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,lt.jsx)(zu,{label:r}),(0,lt.jsx)(Ka,{})]}),(0,lt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,lt.jsx)(cv,{}),e]})]}),(0,lt.jsx)(Qa,{className:"dataviews-filters__container"}),(0,lt.jsx)(ju,{}),(0,lt.jsx)(Hu,{})]})}function Ow({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=Cw,data:a,getItemId:s=yw,getItemLevel:l,isLoading:u=!1,paginationInfo:f,defaultLayouts:d,selection:m,onChangeSelection:p,onClickItem:g,renderItemLink:x,isItemClickable:_=Sw,header:y,children:w,config:E={perPageSizes:[10,20,50,100]},empty:T}){let{infiniteScrollHandler:I}=f,V=(0,Pt.useRef)(null),[D,C]=(0,Pt.useState)(0),S=(0,Cs.useResizeObserver)(fe=>{C(fe[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[k,M]=(0,Pt.useState)([]),A=m===void 0||p===void 0,v=A?k:m,[h,O]=(0,Pt.useState)(null);function b(fe){let Pe=typeof fe=="function"?fe(v):fe;A&&M(Pe),p&&p(Pe)}let N=(0,Pt.useMemo)(()=>Wg(r),[r]),j=(0,Pt.useMemo)(()=>v.filter(fe=>a.some(Pe=>s(Pe)===fe)),[v,a,s]),P=ni(N,e),G=(0,Pt.useMemo)(()=>(P||[]).some(fe=>fe.isPrimary||fe.isLocked),[P]),[K,Xe]=(0,Pt.useState)(G);(0,Pt.useEffect)(()=>{G&&!K&&Xe(!0)},[G,K]),(0,Pt.useEffect)(()=>{if(!e.infiniteScrollEnabled||!V.current)return;let fe=(0,Cs.throttle)(q=>{let Ve=q.target,Ze=Ve.scrollTop,qt=Ve.scrollHeight,kr=Ve.clientHeight;Ze+kr>=qt-100&&I?.()},100),Pe=V.current;return Pe.addEventListener("scroll",fe),()=>{Pe.removeEventListener("scroll",fe),fe.cancel()}},[I,e.infiniteScrollEnabled]);let rt=(0,Pt.useMemo)(()=>Object.fromEntries(Object.entries(d).filter(([fe])=>Ew.some(Pe=>Pe.type===fe))),[d]);return rt[e.type]?(0,lt.jsx)(U.Provider,{value:{view:e,onChangeView:t,fields:N,actions:i,data:a,isLoading:u,paginationInfo:f,selection:j,onChangeSelection:b,openedFilter:h,setOpenedFilter:O,getItemId:s,getItemLevel:l,isItemClickable:_,onClickItem:g,renderItemLink:x,containerWidth:D,containerRef:V,resizeObserverRef:S,defaultLayouts:rt,filters:P,isShowingFilter:K,setIsShowingFilter:Xe,config:E,empty:T,hasInfiniteScrollHandler:!!I},children:(0,lt.jsx)("div",{className:"dataviews-wrapper",ref:V,children:w??(0,lt.jsx)(Pw,{header:y,search:o,searchLabel:n})})}):null}var $t=Ow;$t.BulkActionToolbar=Ji;$t.Filters=ai;$t.FiltersToggled=Qa;$t.FiltersToggle=Ka;$t.Layout=ju;$t.LayoutSwitcher=qu;$t.Pagination=Wl;$t.Search=zu;$t.ViewConfig=Yu;$t.Footer=Hu;var ac=$t;var Gg=c(z(),1),qg=c(R(),1),Yg=(0,Gg.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},i)=>(0,qg.jsx)(o,{ref:i,className:Y("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));Yg.displayName="NavigableRegion";var Ug=Yg;var co=c($(),1);var $g=c($(),1),{Fill:Kg,Slot:Qg}=(0,$g.createSlotFill)("SidebarToggle");var Rr=c(R(),1);function Xg({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Rr.jsxs)(co.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Rr.jsxs)(co.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Rr.jsxs)(co.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Rr.jsx)(Qg,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Rr.jsx)(co.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,Rr.jsx)(co.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Rr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var fi=c(R(),1);function Zg({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:s=!1,showSidebarToggle:l=!0}){let u=Y("admin-ui-page",i);return(0,fi.jsxs)(Ug,{className:u,ariaLabel:r,children:[(r||e||t)&&(0,fi.jsx)(Xg,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:l}),s?(0,fi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}Zg.SidebarToggleFill=Kg;var sc=Zg;var mi=c(lc()),pi=c($()),dc=c(Kt()),vr=c(z()),sh=c(th()),lh=c(X());var rh=c(El()),{lock:PF,unlock:Es}=(0,rh.__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 Iw=c(Kt()),Aw=c(lc()),Vw={type:"table",sort:{field:"date",direction:"desc"},fields:["author","status","date"],titleField:"title",mediaField:"featured_media",descriptionField:"excerpt"},oh={table:{},grid:{},list:{}},uc=[{slug:"all",label:"All"},{slug:"publish",label:"Published"},{slug:"draft",label:"Draft"},{slug:"pending",label:"Pending"},{slug:"private",label:"Private"},{slug:"trash",label:"Trash"}];function nh(e){return e==="all"?{}:{filters:[{field:"status",operator:"is",value:e}]}}function ih(e){return{...Vw,showLevels:e?.hierarchical}}function ah(e,t){let r={};if(e.perPage!==void 0&&(r.per_page=e.perPage),e.page!==void 0&&(r.page=e.page),[void 0,""].includes(e.search)||(r.search=e.search),e.sort?.field!==void 0){let l=e.sort.field;l==="attached_to"&&(l="parent"),r.orderby=l}e.sort?.direction!==void 0&&(r.order=e.sort.direction),e.showLevels&&(r.orderby_hierarchy=!0);let o=e.filters?.find(l=>l.field==="status");o?r.status=o.value:t==="attachment"?r.status="inherit":r.status="draft,future,pending,private,publish";let n=e.filters?.find(l=>l.field==="author");n&&n.operator==="is"?r.author=n.value:n&&n.operator==="isNot"&&(r.author_exclude=n.value);let i=e.filters?.find(l=>l.field==="comment_status");i&&i.operator==="is"?r.comment_status=i.value:i&&i.operator==="isNot"&&(r.comment_status_exclude=i.value);let a=e.filters?.find(l=>l.field==="media_type");a&&(r.media_type=a.value);let s=e.filters?.find(l=>l.field==="date");return s&&s.value&&(s.operator==="before"?r.before=s.value:s.operator==="after"&&(r.after=s.value)),t==="attachment"&&(r._embed="wp:attached-to"),r}if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='f4fc5f9fa1']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","f4fc5f9fa1"),e.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-post-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}')),document.head.appendChild(e)}var{useEntityRecordsWithPermissions:Mw}=Es(mi.privateApis),{usePostActions:Fw,usePostFields:Lw}=Es(sh.privateApis),{Tabs:cc}=Es(pi.privateApis);function Bw(e){return e.id.toString()}function jw(e){return e.level??0}function Hw(){let e=Dw(),{type:t,slug:r="all"}=Tw({from:"/types/$type/list/$slug"}),o=Rw(),n=kw({from:"/types/$type/list/$slug"}),i=(0,dc.useSelect)(v=>v(mi.store).getPostType(t),[t]),a=i?.labels,s=(0,dc.useSelect)(v=>v(mi.store).canUser("create",{kind:"postType",name:t}),[t]),l=(0,vr.useMemo)(()=>ih(i),[i]),u=(0,vr.useMemo)(()=>nh(r),[r]),f=(0,vr.useCallback)(v=>{o({search:{...n,...v}})},[n,o]),{view:d,isModified:m,updateView:p,resetToDefault:g}=ks({kind:"postType",name:t,slug:"default-new",defaultView:l,activeViewOverrides:u,queryParams:n,onChangeQueryParams:f}),x=()=>{g(),e()},_=v=>{p(v),v.type!==d.type&&e()},y=(0,vr.useMemo)(()=>ah(d,t),[d,t]),{records:w,totalItems:E,totalPages:T,isResolving:I}=Mw("postType",t,y),V=Lw({postType:t}),D=(0,vr.useMemo)(()=>V.filter(v=>!(v.id==="status"&&r!=="all")).map(v=>v.id==="status"?{...v,filterBy:!1}:v),[V,r]),C=(0,vr.useCallback)(v=>{let h=v.map(N=>N.id.toString()),O=n.postIds||[],b=O.filter(N=>!h.includes(N));b.length!==O.length?o({search:{...n,postIds:b.length>0?b:void 0}}):e()},[e,n,o]),S=Fw({postType:t,context:"list",onActionPerformed:(v,h)=>{(v==="move-to-trash"||v==="permanently-delete")&&C(h)}}),k=(0,vr.useMemo)(()=>[...S?.flatMap(v=>{switch(v.id){case"permanently-delete":return[{...v,isEligible(h){return h.type==="attachment"?!0:v.isEligible?.(h)??!1}}];case"move-to-trash":return[{...v,isEligible(h){return h.type==="attachment"?!1:v.isEligible?.(h)??!1}}];case"view-post-revisions":return[]}return[v]})],[S]),M=(0,vr.useCallback)(v=>{o({to:`/types/${t}/list/${v}`})},[o,t]);if(!i)return null;let A=n.postIds??[];return d.type==="list"&&A.length===0&&w?.length>0&&A.push(w[0].id.toString()),d.type==="list"&&A.splice(1),React.createElement(sc,{title:i.labels?.name,subTitle:i.labels?.description,className:`${i.name.toLowerCase()}-page`,actions:React.createElement(React.Fragment,null,m&&React.createElement(pi.Button,{variant:"tertiary",size:"compact",onClick:x},(0,lh.__)("Reset view")),a?.add_new_item&&s&&t!=="attachment"&&React.createElement(pi.Button,{variant:"primary",onClick:()=>{o({to:`/types/${t}/new`})},size:"compact"},a.add_new_item)),hasPadding:!1},uc.length>1&&React.createElement("div",{className:"routes-post-list__tabs-wrapper"},React.createElement(cc,{onSelect:M,selectedTabId:r??"all"},React.createElement(cc.TabList,null,uc.map(v=>React.createElement(cc.Tab,{tabId:v.slug,key:v.slug},v.label))))),React.createElement(ac,{data:w,fields:D,view:d,onChangeView:_,actions:k,isLoading:I,paginationInfo:{totalItems:E,totalPages:T},defaultLayouts:oh,getItemId:Bw,getItemLevel:jw,selection:A,onChangeSelection:v=>{o({search:{...n,postIds:v.length>0?v:void 0,edit:v.length===0?void 0:n.edit}})},renderItemLink:({item:v,...h})=>React.createElement(Nw,{to:`/types/${t}/edit/${encodeURIComponent(v.id)}`,...h,onClick:O=>{O.stopPropagation()}})}))}var zw=Hw;export{zw 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. + *) +*/ diff --git a/src/wp-includes/build/routes/post-list/route.js b/src/wp-includes/build/routes/post-list/route.js new file mode 100644 index 0000000000000..c2fddc4aecc04 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/route.js @@ -0,0 +1,298 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// routes/post-list/route.ts +var import_data4 = __toESM(require_data()); +var import_core_data2 = __toESM(require_core_data()); +import { notFound } from "@wordpress/route"; + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f) => f.field) + ); + const preserved = (view.filters ?? []).filter( + (f) => !activeFields.has(f.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); +async function loadView(config) { + const { kind, name, slug, defaultView, activeViewOverrides, queryParams } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data2.select)(import_preferences2.store).get( + "core/views", + preferenceKey + ); + const baseView = persistedView ?? defaultView; + const page = queryParams?.page ?? 1; + const search = queryParams?.search ?? ""; + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); +} + +// routes/post-list/view-utils.ts +var import_data3 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var DEFAULT_VIEW = { + type: "table", + sort: { + field: "date", + direction: "desc" + }, + fields: ["author", "status", "date"], + titleField: "title", + mediaField: "featured_media", + descriptionField: "excerpt" +}; +function getActiveViewOverridesForTab(slug) { + if (slug === "all") { + return {}; + } + return { + filters: [ + { + field: "status", + operator: "is", + value: slug + } + ] + }; +} +function getDefaultView(postType) { + return { + ...DEFAULT_VIEW, + showLevels: postType?.hierarchical + }; +} +async function ensureView(type, slug, search) { + const postTypeObject = await (0, import_data3.resolveSelect)(import_core_data.store).getPostType(type); + const defaultView = getDefaultView(postTypeObject); + return loadView({ + kind: "postType", + name: type, + slug: "default-new", + defaultView, + activeViewOverrides: getActiveViewOverridesForTab(slug ?? "all"), + queryParams: search + }); +} +function viewToQuery(view, postType) { + const result = {}; + if (void 0 !== view.perPage) { + result.per_page = view.perPage; + } + if (void 0 !== view.page) { + result.page = view.page; + } + if (![void 0, ""].includes(view.search)) { + result.search = view.search; + } + if (void 0 !== view.sort?.field) { + let sortField = view.sort.field; + if (sortField === "attached_to") { + sortField = "parent"; + } + result.orderby = sortField; + } + if (void 0 !== view.sort?.direction) { + result.order = view.sort.direction; + } + if (view.showLevels) { + result.orderby_hierarchy = true; + } + const status = view.filters?.find( + (filter) => filter.field === "status" + ); + if (status) { + result.status = status.value; + } else if (postType === "attachment") { + result.status = "inherit"; + } else { + result.status = "draft,future,pending,private,publish"; + } + const author = view.filters?.find( + (filter) => filter.field === "author" + ); + if (author && author.operator === "is") { + result.author = author.value; + } else if (author && author.operator === "isNot") { + result.author_exclude = author.value; + } + const commentStatus = view.filters?.find( + (filter) => filter.field === "comment_status" + ); + if (commentStatus && commentStatus.operator === "is") { + result.comment_status = commentStatus.value; + } else if (commentStatus && commentStatus.operator === "isNot") { + result.comment_status_exclude = commentStatus.value; + } + const mediaType = view.filters?.find( + (filter) => filter.field === "media_type" + ); + if (mediaType) { + result.media_type = mediaType.value; + } + const date = view.filters?.find((filter) => filter.field === "date"); + if (date && date.value) { + if (date.operator === "before") { + result.before = date.value; + } else if (date.operator === "after") { + result.after = date.value; + } + } + if (postType === "attachment") { + result._embed = "wp:attached-to"; + } + return result; +} + +// routes/post-list/route.ts +var route = { + beforeLoad: async ({ params }) => { + try { + const postType = await (0, import_data4.resolveSelect)(import_core_data2.store).getPostType( + params.type + ); + if (!postType) { + throw notFound(); + } + } catch { + throw notFound(); + } + }, + title: async ({ params }) => { + const postType = await (0, import_data4.resolveSelect)(import_core_data2.store).getPostType( + params.type + ); + return postType?.labels?.name || params.type; + }, + async canvas(context) { + const { params, search } = context; + const view = await ensureView(params.type, params.slug, { + page: search.page, + search: search.search + }); + if (view.type !== "list") { + return void 0; + } + if (search.postIds && search.postIds.length > 0) { + const postId = search.postIds[0].toString(); + return { + postType: params.type, + postId, + isPreview: true, + editLink: `/types/${params.type}/edit/${postId}` + }; + } + const query = viewToQuery(view, params.type); + const posts = await (0, import_data4.resolveSelect)(import_core_data2.store).getEntityRecords( + "postType", + params.type, + { ...query, per_page: 1 } + ); + if (posts && posts.length > 0) { + const postId = posts[0].id.toString(); + return { + postType: params.type, + postId, + isPreview: true, + editLink: `/types/${params.type}/edit/${postId}` + }; + } + return void 0; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/post-list/route.min.asset.php b/src/wp-includes/build/routes/post-list/route.min.asset.php new file mode 100644 index 0000000000000..0a7f73b906c76 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-element', 'wp-preferences'), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'dadd3a5798607437d341'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/post-list/route.min.js b/src/wp-includes/build/routes/post-list/route.min.js new file mode 100644 index 0000000000000..a78a86baa5039 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/route.min.js @@ -0,0 +1 @@ +var U=Object.create;var T=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var M=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of z(t))!B.call(e,s)&&s!==r&&T(e,s,{get:()=>t[s],enumerable:!(i=K(t,s))||i.enumerable});return e};var f=(e,t,r)=>(r=e!=null?U(O(e)):{},M(t||!e||!e.__esModule?T(r,"default",{value:e,enumerable:!0}):r,e));var p=c((Y,V)=>{V.exports=window.wp.data});var m=c((G,x)=>{x.exports=window.wp.coreData});var S=c((J,P)=>{P.exports=window.wp.element});var g=c((X,A)=>{A.exports=window.wp.preferences});var u=f(p()),d=f(m());import{notFound as E}from"@wordpress/route";var _=f(S(),1),b=f(p(),1),N=f(g(),1);function y(e,t,r){return`dataviews-${e}-${t}-${r}`}function h(e,t,r){if(!t)return e;let i=e;if(t.filters&&t.filters.length>0){let s=new Set(t.filters.map(n=>n.field)),o=(e.filters??[]).filter(n=>!s.has(n.field));i={...i,filters:[...o,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(i={...i,sort:t.sort}),i}var v=f(p(),1),D=f(g(),1);async function w(e){let{kind:t,name:r,slug:i,defaultView:s,activeViewOverrides:o,queryParams:n}=e,l=y(t,r,i),$=(0,v.select)(D.store).get("core/views",l)??s,j=n?.page??1,q=n?.search??"";return h({...$,page:j,search:q},o,s)}var F=f(p()),L=f(m()),Q={type:"table",sort:{field:"date",direction:"desc"},fields:["author","status","date"],titleField:"title",mediaField:"featured_media",descriptionField:"excerpt"};function R(e){return e==="all"?{}:{filters:[{field:"status",operator:"is",value:e}]}}function C(e){return{...Q,showLevels:e?.hierarchical}}async function I(e,t,r){let i=await(0,F.resolveSelect)(L.store).getPostType(e),s=C(i);return w({kind:"postType",name:e,slug:"default-new",defaultView:s,activeViewOverrides:R(t??"all"),queryParams:r})}function k(e,t){let r={};if(e.perPage!==void 0&&(r.per_page=e.perPage),e.page!==void 0&&(r.page=e.page),[void 0,""].includes(e.search)||(r.search=e.search),e.sort?.field!==void 0){let a=e.sort.field;a==="attached_to"&&(a="parent"),r.orderby=a}e.sort?.direction!==void 0&&(r.order=e.sort.direction),e.showLevels&&(r.orderby_hierarchy=!0);let i=e.filters?.find(a=>a.field==="status");i?r.status=i.value:t==="attachment"?r.status="inherit":r.status="draft,future,pending,private,publish";let s=e.filters?.find(a=>a.field==="author");s&&s.operator==="is"?r.author=s.value:s&&s.operator==="isNot"&&(r.author_exclude=s.value);let o=e.filters?.find(a=>a.field==="comment_status");o&&o.operator==="is"?r.comment_status=o.value:o&&o.operator==="isNot"&&(r.comment_status_exclude=o.value);let n=e.filters?.find(a=>a.field==="media_type");n&&(r.media_type=n.value);let l=e.filters?.find(a=>a.field==="date");return l&&l.value&&(l.operator==="before"?r.before=l.value:l.operator==="after"&&(r.after=l.value)),t==="attachment"&&(r._embed="wp:attached-to"),r}var we={beforeLoad:async({params:e})=>{try{if(!await(0,u.resolveSelect)(d.store).getPostType(e.type))throw E()}catch{throw E()}},title:async({params:e})=>(await(0,u.resolveSelect)(d.store).getPostType(e.type))?.labels?.name||e.type,async canvas(e){let{params:t,search:r}=e,i=await I(t.type,t.slug,{page:r.page,search:r.search});if(i.type!=="list")return;if(r.postIds&&r.postIds.length>0){let n=r.postIds[0].toString();return{postType:t.type,postId:n,isPreview:!0,editLink:`/types/${t.type}/edit/${n}`}}let s=k(i,t.type),o=await(0,u.resolveSelect)(d.store).getEntityRecords("postType",t.type,{...s,per_page:1});if(o&&o.length>0){let n=o[0].id.toString();return{postType:t.type,postId:n,isPreview:!0,editLink:`/types/${t.type}/edit/${n}`}}}};export{we as route}; diff --git a/src/wp-includes/build/routes/post-new/route.js b/src/wp-includes/build/routes/post-new/route.js new file mode 100644 index 0000000000000..6469d3c35360d --- /dev/null +++ b/src/wp-includes/build/routes/post-new/route.js @@ -0,0 +1,70 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// routes/post-new/route.ts +var import_data = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var route = { + title: async ({ params }) => { + const postType = await (0, import_data.resolveSelect)(import_core_data.store).getPostType( + params.type + ); + return postType?.labels?.add_new_item || postType?.labels?.add_new; + }, + async canvas(context) { + const { params } = context; + const newPost = await (0, import_data.dispatch)(import_core_data.store).saveEntityRecord( + "postType", + params.type, + { + title: "Auto Draft", + content: "", + status: "auto-draft" + } + ); + return { + postType: params.type, + postId: String(newPost.id) + }; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/post-new/route.min.asset.php b/src/wp-includes/build/routes/post-new/route.min.asset.php new file mode 100644 index 0000000000000..13adc708ff47b --- /dev/null +++ b/src/wp-includes/build/routes/post-new/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data'), 'version' => 'aa76ce46f1b581e7dc6c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/post-new/route.min.js b/src/wp-includes/build/routes/post-new/route.min.js new file mode 100644 index 0000000000000..df0a2a95e699d --- /dev/null +++ b/src/wp-includes/build/routes/post-new/route.min.js @@ -0,0 +1 @@ +var m=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var i=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var v=(e,t,a,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of f(t))!T.call(e,o)&&o!==a&&n(e,o,{get:()=>t[o],enumerable:!(p=u(t,o))||p.enumerable});return e};var c=(e,t,a)=>(a=e!=null?m(g(e)):{},v(t||!e||!e.__esModule?n(a,"default",{value:e,enumerable:!0}):a,e));var y=i((S,d)=>{d.exports=window.wp.data});var l=i((_,w)=>{w.exports=window.wp.coreData});var s=c(y()),r=c(l()),b={title:async({params:e})=>{let t=await(0,s.resolveSelect)(r.store).getPostType(e.type);return t?.labels?.add_new_item||t?.labels?.add_new},async canvas(e){let{params:t}=e,a=await(0,s.dispatch)(r.store).saveEntityRecord("postType",t.type,{title:"Auto Draft",content:"",status:"auto-draft"});return{postType:t.type,postId:String(a.id)}}};export{b as route}; diff --git a/src/wp-includes/build/routes/post/route.js b/src/wp-includes/build/routes/post/route.js new file mode 100644 index 0000000000000..31e2bc94c3e94 --- /dev/null +++ b/src/wp-includes/build/routes/post/route.js @@ -0,0 +1,17 @@ +// routes/post/route.ts +import { redirect } from "@wordpress/route"; +var route = { + beforeLoad: ({ params }) => { + throw redirect({ + throw: true, + to: "/types/$type/list/$slug", + params: { + type: params.type, + slug: "all" + } + }); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/post/route.min.asset.php b/src/wp-includes/build/routes/post/route.min.asset.php new file mode 100644 index 0000000000000..00edaaecc37c8 --- /dev/null +++ b/src/wp-includes/build/routes/post/route.min.asset.php @@ -0,0 +1 @@ + array(), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '578c1fae94cf3e2b85a0'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/post/route.min.js b/src/wp-includes/build/routes/post/route.min.js new file mode 100644 index 0000000000000..9a67b3c6568d8 --- /dev/null +++ b/src/wp-includes/build/routes/post/route.min.js @@ -0,0 +1 @@ +import{redirect as r}from"@wordpress/route";var o={beforeLoad:({params:t})=>{throw r({throw:!0,to:"/types/$type/list/$slug",params:{type:t.type,slug:"all"}})}};export{o as route}; diff --git a/src/wp-includes/build/routes/styles/content.js b/src/wp-includes/build/routes/styles/content.js new file mode 100644 index 0000000000000..bdced3a583c3a --- /dev/null +++ b/src/wp-includes/build/routes/styles/content.js @@ -0,0 +1,332 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// routes/styles/stage.tsx +import { useNavigate, useSearch } from "@wordpress/route"; + +// node_modules/clsx/dist/clsx.mjs +function r(e) { + var t, f, n = ""; + if ("string" == typeof e || "number" == typeof e) n += e; + else if ("object" == typeof e) if (Array.isArray(e)) { + var o = e.length; + for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); + } else for (f in e) e[f] && (n && (n += " "), n += f); + return n; +} +function clsx() { + for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); + return n; +} +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/admin-ui/build-module/page/header.mjs +var import_components2 = __toESM(require_components(), 1); + +// 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); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { spacing: 2, justify: "left", 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)(import_components2.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + import_components2.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + 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_runtime3 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + 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)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/styles/stage.tsx +var import_i18n = __toESM(require_i18n()); +var import_editor = __toESM(require_editor()); +var import_compose = __toESM(require_compose()); +var import_components3 = __toESM(require_components()); + +// packages/icons/build-module/library/seen.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// routes/styles/stage.tsx +var import_element2 = __toESM(require_element()); + +// routes/styles/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='7be460f5dc']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "7be460f5dc"); + style.appendChild(document.createTextNode(".routes-styles__page .global-styles-ui-screen-root{box-shadow:none}.routes-styles__page .global-styles-ui-screen-root>div>hr{display:none}.routes-styles__page .global-styles-ui-sidebar__navigator-provider .components-tools-panel{border-top:none}.routes-styles__page .global-styles-ui-sidebar__navigator-provider{overflow-y:auto;padding-left:0;padding-right:0}")); + document.head.appendChild(style); +} + +// 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/styles/stage.tsx +var { GlobalStylesUIWrapper, GlobalStylesActionMenu } = unlock(import_editor.privateApis); +function Stage() { + const navigate = useNavigate(); + const search = useSearch({ strict: false }); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + const section = search.section ?? "/"; + const [isStyleBookOpened, setIsStyleBookOpened] = (0, import_element2.useState)( + search.preview === "stylebook" + ); + const onChangeSection = (updatedSection) => { + navigate({ + search: { + ...search, + section: updatedSection + } + }); + }; + return /* @__PURE__ */ React.createElement( + page_default, + { + actions: !isMobileViewport ? /* @__PURE__ */ React.createElement(import_components3.__experimentalHStack, null, /* @__PURE__ */ React.createElement( + import_components3.Button, + { + size: "compact", + isPressed: isStyleBookOpened, + icon: seen_default, + label: (0, import_i18n.__)("Style Book"), + onClick: () => { + const newIsStyleBookOpened = !isStyleBookOpened; + setIsStyleBookOpened(newIsStyleBookOpened); + navigate({ + search: newIsStyleBookOpened ? { ...search, preview: "stylebook" } : (() => { + const { + preview, + ...restSearch + } = search; + return restSearch; + })() + }); + } + } + ), /* @__PURE__ */ React.createElement( + GlobalStylesActionMenu, + { + hideWelcomeGuide: true, + onChangePath: onChangeSection + } + )) : null, + className: "routes-styles__page", + title: (0, import_i18n.__)("Styles") + }, + /* @__PURE__ */ React.createElement( + GlobalStylesUIWrapper, + { + path: section, + onPathChange: onChangeSection + } + ) + ); +} +var stage = Stage; + +// routes/styles/canvas.tsx +var import_editor2 = __toESM(require_editor()); +var import_components4 = __toESM(require_components()); +import { useNavigate as useNavigate2, useSearch as useSearch2 } from "@wordpress/route"; +import { useEditorAssets } from "@wordpress/lazy-editor"; +var { StyleBookPreview } = unlock(import_editor2.privateApis); +function Canvas() { + const { isReady: assetsReady } = useEditorAssets(); + const navigate = useNavigate2(); + const search = useSearch2({ strict: false }); + const section = search.section ?? "/"; + const onChangeSection = (updatedSection) => { + navigate({ + search: { + ...search, + section: updatedSection + } + }); + }; + if (!assetsReady) { + return /* @__PURE__ */ React.createElement( + "div", + { + style: { + display: "flex", + justifyContent: "center", + alignItems: "center", + height: "100%" + } + }, + /* @__PURE__ */ React.createElement(import_components4.Spinner, null) + ); + } + return /* @__PURE__ */ React.createElement(StyleBookPreview, { path: section, onPathChange: onChangeSection }); +} +var canvas = Canvas; +export { + canvas, + stage +}; diff --git a/src/wp-includes/build/routes/styles/content.min.asset.php b/src/wp-includes/build/routes/styles/content.min.asset.php new file mode 100644 index 0000000000000..50eb1911d7353 --- /dev/null +++ b/src/wp-includes/build/routes/styles/content.min.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-private-apis'), 'module_dependencies' => array(array('id' => '@wordpress/lazy-editor', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'b9a15dbf368b73301ffe'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/styles/content.min.js b/src/wp-includes/build/routes/styles/content.min.js new file mode 100644 index 0000000000000..5cb46772f7412 --- /dev/null +++ b/src/wp-includes/build/routes/styles/content.min.js @@ -0,0 +1 @@ +var ea=Object.create;var R=Object.defineProperty;var oa=Object.getOwnPropertyDescriptor;var fa=Object.getOwnPropertyNames;var ra=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var d=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports);var la=(a,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of fa(t))!sa.call(a,f)&&f!==e&&R(a,f,{get:()=>t[f],enumerable:!(o=oa(t,f))||o.enumerable});return a};var r=(a,t,e)=>(e=a!=null?ea(ra(a)):{},la(t||!a||!a.__esModule?R(e,"default",{value:a,enumerable:!0}):e,a));var N=d((xa,B)=>{B.exports=window.wp.i18n});var i=d((Sa,T)=>{T.exports=window.wp.components});var p=d((ka,A)=>{A.exports=window.ReactJSXRuntime});var v=d((_a,j)=>{j.exports=window.wp.element});var x=d((Ia,z)=>{z.exports=window.wp.editor});var W=d((Oa,E)=>{E.exports=window.wp.compose});var J=d((qa,G)=>{G.exports=window.wp.primitives});var X=d((Wa,Z)=>{Z.exports=window.wp.privateApis});import{useNavigate as ma,useSearch as ua}from"@wordpress/route";function P(a){var t,e,o="";if(typeof a=="string"||typeof a=="number")o+=a;else if(typeof a=="object")if(Array.isArray(a)){var f=a.length;for(t=0;t(0,F.jsx)(o,{ref:s,className:g("admin-ui-navigable-region",t),"aria-label":e,role:"region",tabIndex:"-1",...f,children:a}));H.displayName="NavigableRegion";var U=H;var m=r(i(),1);var V=r(i(),1),{Fill:I,Slot:O}=(0,V.createSlotFill)("SidebarToggle");var l=r(p(),1);function q({breadcrumbs:a,badges:t,title:e,subTitle:o,actions:f,showSidebarToggle:s=!0}){return(0,l.jsxs)(m.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,l.jsxs)(m.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,l.jsxs)(m.__experimentalHStack,{spacing:2,justify:"left",children:[s&&(0,l.jsx)(O,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),e&&(0,l.jsx)(m.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:e}),a,t]}),(0,l.jsx)(m.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:f})]}),o&&(0,l.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var n=r(p(),1);function M({breadcrumbs:a,badges:t,title:e,subTitle:o,children:f,className:s,actions:c,hasPadding:u=!1,showSidebarToggle:_=!0}){let w=g("admin-ui-page",s);return(0,n.jsxs)(U,{className:w,ariaLabel:e,children:[(e||a||t)&&(0,n.jsx)(q,{breadcrumbs:a,badges:t,title:e,subTitle:o,actions:c,showSidebarToggle:_}),u?(0,n.jsx)("div",{className:"admin-ui-page__content has-padding",children:f}):f]})}M.SidebarToggleFill=I;var C=M;var L=r(N()),Q=r(x()),Y=r(W()),y=r(i());var h=r(J(),1),S=r(p(),1),k=(0,S.jsx)(h.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,S.jsx)(h.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})});var $=r(v());if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='7be460f5dc']")){let a=document.createElement("style");a.setAttribute("data-wp-hash","7be460f5dc"),a.appendChild(document.createTextNode(".routes-styles__page .global-styles-ui-screen-root{box-shadow:none}.routes-styles__page .global-styles-ui-screen-root>div>hr{display:none}.routes-styles__page .global-styles-ui-sidebar__navigator-provider .components-tools-panel{border-top:none}.routes-styles__page .global-styles-ui-sidebar__navigator-provider{overflow-y:auto;padding-left:0;padding-right:0}")),document.head.appendChild(a)}var K=r(X()),{lock:Ga,unlock:b}=(0,K.__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{GlobalStylesUIWrapper:ia,GlobalStylesActionMenu:pa}=b(Q.privateApis);function na(){let a=ma(),t=ua({strict:!1}),e=(0,Y.useViewportMatch)("medium","<"),o=t.section??"/",[f,s]=(0,$.useState)(t.preview==="stylebook"),c=u=>{a({search:{...t,section:u}})};return React.createElement(C,{actions:e?null:React.createElement(y.__experimentalHStack,null,React.createElement(y.Button,{size:"compact",isPressed:f,icon:k,label:(0,L.__)("Style Book"),onClick:()=>{let u=!f;s(u),a({search:u?{...t,preview:"stylebook"}:(()=>{let{preview:_,...w}=t;return w})()})}}),React.createElement(pa,{hideWelcomeGuide:!0,onChangePath:c})),className:"routes-styles__page",title:(0,L.__)("Styles")},React.createElement(ia,{path:o,onPathChange:c}))}var ca=na;var aa=r(x()),ta=r(i());import{useNavigate as ga,useSearch as ha}from"@wordpress/route";import{useEditorAssets as ba}from"@wordpress/lazy-editor";var{StyleBookPreview:ya}=b(aa.privateApis);function wa(){let{isReady:a}=ba(),t=ga(),e=ha({strict:!1}),o=e.section??"/",f=s=>{t({search:{...e,section:s}})};return a?React.createElement(ya,{path:o,onPathChange:f}):React.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}},React.createElement(ta.Spinner,null))}var va=wa;export{va as canvas,ca as stage}; diff --git a/src/wp-includes/build/routes/styles/route.js b/src/wp-includes/build/routes/styles/route.js new file mode 100644 index 0000000000000..6f7f959bad2ce --- /dev/null +++ b/src/wp-includes/build/routes/styles/route.js @@ -0,0 +1,49 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// routes/styles/route.ts +var import_i18n = __toESM(require_i18n()); +var route = { + title: () => (0, import_i18n.__)("Styles"), + async canvas(context) { + if (context.search.preview === "stylebook") { + return null; + } + return { + isPreview: true + }; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/styles/route.min.asset.php b/src/wp-includes/build/routes/styles/route.min.asset.php new file mode 100644 index 0000000000000..4a60707cd9f5d --- /dev/null +++ b/src/wp-includes/build/routes/styles/route.min.asset.php @@ -0,0 +1 @@ + array('wp-i18n'), 'version' => '4d90e5b95e56aedaba48'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/styles/route.min.js b/src/wp-includes/build/routes/styles/route.min.js new file mode 100644 index 0000000000000..87122c72760be --- /dev/null +++ b/src/wp-includes/build/routes/styles/route.min.js @@ -0,0 +1 @@ +var p=Object.create;var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var c=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var v=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var f=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of w(r))!y.call(e,n)&&n!==t&&i(e,n,{get:()=>r[n],enumerable:!(o=u(r,n))||o.enumerable});return e};var m=(e,r,t)=>(t=e!=null?p(c(e)):{},f(r||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e));var a=v((_,s)=>{s.exports=window.wp.i18n});var l=m(a()),b={title:()=>(0,l.__)("Styles"),async canvas(e){return e.search.preview==="stylebook"?null:{isPreview:!0}}};export{b as route}; diff --git a/src/wp-includes/build/routes/template-list/content.js b/src/wp-includes/build/routes/template-list/content.js new file mode 100644 index 0000000000000..2bf9b6a9f8d33 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/content.js @@ -0,0 +1,19284 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// vendor-external:react +var require_react = __commonJS({ + "vendor-external:react"(exports, module) { + module.exports = window.React; + } +}); + +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + +// 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(subscribe2, getSnapshot) { + didWarnOld18Alpha || void 0 === React9.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 = useState27({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect2( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe2, value, getSnapshot] + ); + useEffect20( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe2(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe2] + ); + useDebugValue(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(subscribe2, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React9 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState27 = React9.useState, useEffect20 = React9.useEffect, useLayoutEffect2 = React9.useLayoutEffect, useDebugValue = React9.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 !== React9.useSyncExternalStore ? React9.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(); + } + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; + } +}); + +// package-external:@wordpress/keycodes +var require_keycodes = __commonJS({ + "package-external:@wordpress/keycodes"(exports, module) { + module.exports = window.wp.keycodes; + } +}); + +// node_modules/remove-accents/index.js +var require_remove_accents = __commonJS({ + "node_modules/remove-accents/index.js"(exports, module) { + var characterMap = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\u1EA4": "A", + "\u1EAE": "A", + "\u1EB2": "A", + "\u1EB4": "A", + "\u1EB6": "A", + "\xC6": "AE", + "\u1EA6": "A", + "\u1EB0": "A", + "\u0202": "A", + "\u1EA2": "A", + "\u1EA0": "A", + "\u1EA8": "A", + "\u1EAA": "A", + "\u1EAC": "A", + "\xC7": "C", + "\u1E08": "C", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\u1EBE": "E", + "\u1E16": "E", + "\u1EC0": "E", + "\u1E14": "E", + "\u1E1C": "E", + "\u0206": "E", + "\u1EBA": "E", + "\u1EBC": "E", + "\u1EB8": "E", + "\u1EC2": "E", + "\u1EC4": "E", + "\u1EC6": "E", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\u1E2E": "I", + "\u020A": "I", + "\u1EC8": "I", + "\u1ECA": "I", + "\xD0": "D", + "\xD1": "N", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\u1ED0": "O", + "\u1E4C": "O", + "\u1E52": "O", + "\u020E": "O", + "\u1ECE": "O", + "\u1ECC": "O", + "\u1ED4": "O", + "\u1ED6": "O", + "\u1ED8": "O", + "\u1EDC": "O", + "\u1EDE": "O", + "\u1EE0": "O", + "\u1EDA": "O", + "\u1EE2": "O", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\u1EE6": "U", + "\u1EE4": "U", + "\u1EEC": "U", + "\u1EEE": "U", + "\u1EF0": "U", + "\xDD": "Y", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\u1EA5": "a", + "\u1EAF": "a", + "\u1EB3": "a", + "\u1EB5": "a", + "\u1EB7": "a", + "\xE6": "ae", + "\u1EA7": "a", + "\u1EB1": "a", + "\u0203": "a", + "\u1EA3": "a", + "\u1EA1": "a", + "\u1EA9": "a", + "\u1EAB": "a", + "\u1EAD": "a", + "\xE7": "c", + "\u1E09": "c", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\u1EBF": "e", + "\u1E17": "e", + "\u1EC1": "e", + "\u1E15": "e", + "\u1E1D": "e", + "\u0207": "e", + "\u1EBB": "e", + "\u1EBD": "e", + "\u1EB9": "e", + "\u1EC3": "e", + "\u1EC5": "e", + "\u1EC7": "e", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\u1E2F": "i", + "\u020B": "i", + "\u1EC9": "i", + "\u1ECB": "i", + "\xF0": "d", + "\xF1": "n", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\u1ED1": "o", + "\u1E4D": "o", + "\u1E53": "o", + "\u020F": "o", + "\u1ECF": "o", + "\u1ECD": "o", + "\u1ED5": "o", + "\u1ED7": "o", + "\u1ED9": "o", + "\u1EDD": "o", + "\u1EDF": "o", + "\u1EE1": "o", + "\u1EDB": "o", + "\u1EE3": "o", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\u1EE7": "u", + "\u1EE5": "u", + "\u1EED": "u", + "\u1EEF": "u", + "\u1EF1": "u", + "\xFD": "y", + "\xFF": "y", + "\u0100": "A", + "\u0101": "a", + "\u0102": "A", + "\u0103": "a", + "\u0104": "A", + "\u0105": "a", + "\u0106": "C", + "\u0107": "c", + "\u0108": "C", + "\u0109": "c", + "\u010A": "C", + "\u010B": "c", + "\u010C": "C", + "\u010D": "c", + "C\u0306": "C", + "c\u0306": "c", + "\u010E": "D", + "\u010F": "d", + "\u0110": "D", + "\u0111": "d", + "\u0112": "E", + "\u0113": "e", + "\u0114": "E", + "\u0115": "e", + "\u0116": "E", + "\u0117": "e", + "\u0118": "E", + "\u0119": "e", + "\u011A": "E", + "\u011B": "e", + "\u011C": "G", + "\u01F4": "G", + "\u011D": "g", + "\u01F5": "g", + "\u011E": "G", + "\u011F": "g", + "\u0120": "G", + "\u0121": "g", + "\u0122": "G", + "\u0123": "g", + "\u0124": "H", + "\u0125": "h", + "\u0126": "H", + "\u0127": "h", + "\u1E2A": "H", + "\u1E2B": "h", + "\u0128": "I", + "\u0129": "i", + "\u012A": "I", + "\u012B": "i", + "\u012C": "I", + "\u012D": "i", + "\u012E": "I", + "\u012F": "i", + "\u0130": "I", + "\u0131": "i", + "\u0132": "IJ", + "\u0133": "ij", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u1E30": "K", + "\u1E31": "k", + "K\u0306": "K", + "k\u0306": "k", + "\u0139": "L", + "\u013A": "l", + "\u013B": "L", + "\u013C": "l", + "\u013D": "L", + "\u013E": "l", + "\u013F": "L", + "\u0140": "l", + "\u0141": "l", + "\u0142": "l", + "\u1E3E": "M", + "\u1E3F": "m", + "M\u0306": "M", + "m\u0306": "m", + "\u0143": "N", + "\u0144": "n", + "\u0145": "N", + "\u0146": "n", + "\u0147": "N", + "\u0148": "n", + "\u0149": "n", + "N\u0306": "N", + "n\u0306": "n", + "\u014C": "O", + "\u014D": "o", + "\u014E": "O", + "\u014F": "o", + "\u0150": "O", + "\u0151": "o", + "\u0152": "OE", + "\u0153": "oe", + "P\u0306": "P", + "p\u0306": "p", + "\u0154": "R", + "\u0155": "r", + "\u0156": "R", + "\u0157": "r", + "\u0158": "R", + "\u0159": "r", + "R\u0306": "R", + "r\u0306": "r", + "\u0212": "R", + "\u0213": "r", + "\u015A": "S", + "\u015B": "s", + "\u015C": "S", + "\u015D": "s", + "\u015E": "S", + "\u0218": "S", + "\u0219": "s", + "\u015F": "s", + "\u0160": "S", + "\u0161": "s", + "\u0162": "T", + "\u0163": "t", + "\u021B": "t", + "\u021A": "T", + "\u0164": "T", + "\u0165": "t", + "\u0166": "T", + "\u0167": "t", + "T\u0306": "T", + "t\u0306": "t", + "\u0168": "U", + "\u0169": "u", + "\u016A": "U", + "\u016B": "u", + "\u016C": "U", + "\u016D": "u", + "\u016E": "U", + "\u016F": "u", + "\u0170": "U", + "\u0171": "u", + "\u0172": "U", + "\u0173": "u", + "\u0216": "U", + "\u0217": "u", + "V\u0306": "V", + "v\u0306": "v", + "\u0174": "W", + "\u0175": "w", + "\u1E82": "W", + "\u1E83": "w", + "X\u0306": "X", + "x\u0306": "x", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "Y\u0306": "Y", + "y\u0306": "y", + "\u0179": "Z", + "\u017A": "z", + "\u017B": "Z", + "\u017C": "z", + "\u017D": "Z", + "\u017E": "z", + "\u017F": "s", + "\u0192": "f", + "\u01A0": "O", + "\u01A1": "o", + "\u01AF": "U", + "\u01B0": "u", + "\u01CD": "A", + "\u01CE": "a", + "\u01CF": "I", + "\u01D0": "i", + "\u01D1": "O", + "\u01D2": "o", + "\u01D3": "U", + "\u01D4": "u", + "\u01D5": "U", + "\u01D6": "u", + "\u01D7": "U", + "\u01D8": "u", + "\u01D9": "U", + "\u01DA": "u", + "\u01DB": "U", + "\u01DC": "u", + "\u1EE8": "U", + "\u1EE9": "u", + "\u1E78": "U", + "\u1E79": "u", + "\u01FA": "A", + "\u01FB": "a", + "\u01FC": "AE", + "\u01FD": "ae", + "\u01FE": "O", + "\u01FF": "o", + "\xDE": "TH", + "\xFE": "th", + "\u1E54": "P", + "\u1E55": "p", + "\u1E64": "S", + "\u1E65": "s", + "X\u0301": "X", + "x\u0301": "x", + "\u0403": "\u0413", + "\u0453": "\u0433", + "\u040C": "\u041A", + "\u045C": "\u043A", + "A\u030B": "A", + "a\u030B": "a", + "E\u030B": "E", + "e\u030B": "e", + "I\u030B": "I", + "i\u030B": "i", + "\u01F8": "N", + "\u01F9": "n", + "\u1ED2": "O", + "\u1ED3": "o", + "\u1E50": "O", + "\u1E51": "o", + "\u1EEA": "U", + "\u1EEB": "u", + "\u1E80": "W", + "\u1E81": "w", + "\u1EF2": "Y", + "\u1EF3": "y", + "\u0200": "A", + "\u0201": "a", + "\u0204": "E", + "\u0205": "e", + "\u0208": "I", + "\u0209": "i", + "\u020C": "O", + "\u020D": "o", + "\u0210": "R", + "\u0211": "r", + "\u0214": "U", + "\u0215": "u", + "B\u030C": "B", + "b\u030C": "b", + "\u010C\u0323": "C", + "\u010D\u0323": "c", + "\xCA\u030C": "E", + "\xEA\u030C": "e", + "F\u030C": "F", + "f\u030C": "f", + "\u01E6": "G", + "\u01E7": "g", + "\u021E": "H", + "\u021F": "h", + "J\u030C": "J", + "\u01F0": "j", + "\u01E8": "K", + "\u01E9": "k", + "M\u030C": "M", + "m\u030C": "m", + "P\u030C": "P", + "p\u030C": "p", + "Q\u030C": "Q", + "q\u030C": "q", + "\u0158\u0329": "R", + "\u0159\u0329": "r", + "\u1E66": "S", + "\u1E67": "s", + "V\u030C": "V", + "v\u030C": "v", + "W\u030C": "W", + "w\u030C": "w", + "X\u030C": "X", + "x\u030C": "x", + "Y\u030C": "Y", + "y\u030C": "y", + "A\u0327": "A", + "a\u0327": "a", + "B\u0327": "B", + "b\u0327": "b", + "\u1E10": "D", + "\u1E11": "d", + "\u0228": "E", + "\u0229": "e", + "\u0190\u0327": "E", + "\u025B\u0327": "e", + "\u1E28": "H", + "\u1E29": "h", + "I\u0327": "I", + "i\u0327": "i", + "\u0197\u0327": "I", + "\u0268\u0327": "i", + "M\u0327": "M", + "m\u0327": "m", + "O\u0327": "O", + "o\u0327": "o", + "Q\u0327": "Q", + "q\u0327": "q", + "U\u0327": "U", + "u\u0327": "u", + "X\u0327": "X", + "x\u0327": "x", + "Z\u0327": "Z", + "z\u0327": "z", + "\u0439": "\u0438", + "\u0419": "\u0418", + "\u0451": "\u0435", + "\u0401": "\u0415" + }; + var chars = Object.keys(characterMap).join("|"); + var allAccents = new RegExp(chars, "g"); + var firstAccent = new RegExp(chars, ""); + function matcher(match2) { + return characterMap[match2]; + } + var removeAccents3 = function(string) { + return string.replace(allAccents, matcher); + }; + var hasAccents = function(string) { + return !!string.match(firstAccent); + }; + module.exports = removeAccents3; + module.exports.has = hasAccents; + module.exports.remove = removeAccents3; + } +}); + +// node_modules/fast-deep-equal/es6/index.js +var require_es6 = __commonJS({ + "node_modules/fast-deep-equal/es6/index.js"(exports, module) { + "use strict"; + module.exports = function equal(a2, b2) { + if (a2 === b2) return true; + if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { + if (a2.constructor !== b2.constructor) return false; + var length, i2, keys; + if (Array.isArray(a2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (!equal(a2[i2], b2[i2])) return false; + return true; + } + if (a2 instanceof Map && b2 instanceof Map) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + for (i2 of a2.entries()) + if (!equal(i2[1], b2.get(i2[0]))) return false; + return true; + } + if (a2 instanceof Set && b2 instanceof Set) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + return true; + } + if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (a2[i2] !== b2[i2]) return false; + return true; + } + if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; + if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); + if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) return false; + for (i2 = length; i2-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; + for (i2 = length; i2-- !== 0; ) { + var key = keys[i2]; + if (!equal(a2[key], b2[key])) return false; + } + return true; + } + return a2 !== a2 && b2 !== b2; + }; + } +}); + +// package-external:@wordpress/date +var require_date = __commonJS({ + "package-external:@wordpress/date"(exports, module) { + module.exports = window.wp.date; + } +}); + +// package-external:@wordpress/warning +var require_warning = __commonJS({ + "package-external:@wordpress/warning"(exports, module) { + module.exports = window.wp.warning; + } +}); + +// package-external:@wordpress/deprecated +var require_deprecated = __commonJS({ + "package-external:@wordpress/deprecated"(exports, module) { + module.exports = window.wp.deprecated; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// package-external:@wordpress/html-entities +var require_html_entities = __commonJS({ + "package-external:@wordpress/html-entities"(exports, module) { + module.exports = window.wp.htmlEntities; + } +}); + +// package-external:@wordpress/notices +var require_notices = __commonJS({ + "package-external:@wordpress/notices"(exports, module) { + module.exports = window.wp.notices; + } +}); + +// package-external:@wordpress/dom +var require_dom = __commonJS({ + "package-external:@wordpress/dom"(exports, module) { + module.exports = window.wp.dom; + } +}); + +// package-external:@wordpress/url +var require_url = __commonJS({ + "package-external:@wordpress/url"(exports, module) { + module.exports = window.wp.url; + } +}); + +// routes/template-list/stage-activation.tsx +import { + useParams, + useNavigate as useNavigate2, + useSearch, + useInvalidate as useInvalidate2 +} from "@wordpress/route"; + +// node_modules/dequal/dist/index.mjs +var has = Object.prototype.hasOwnProperty; +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + if (foo && bar && (ctor = foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + if (ctor === Array) { + if ((len = foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])) ; + } + return len === -1; + } + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; + } + return len === -1; + } + if (ArrayBuffer.isView(foo)) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]) ; + } + return len === -1; + } + if (!ctor || typeof foo === "object") { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + return foo !== foo && bar !== bar; +} + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + const preserved = (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + result = { + ...result, + filters: (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ) + }; + } + if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { + result = { + ...result, + sort: defaultView?.sort + }; + } + return result; +} + +// packages/views/build-module/use-view.mjs +function omit(obj, keys) { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +} +function useView(config) { + const { + kind, + name, + slug, + defaultView, + activeViewOverrides, + queryParams, + onChangeQueryParams + } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data.useSelect)( + (select2) => { + return select2(import_preferences.store).get( + "core/views", + preferenceKey + ); + }, + [preferenceKey] + ); + const { set } = (0, import_data.useDispatch)(import_preferences.store); + const baseView = persistedView ?? defaultView; + const page = Number(queryParams?.page ?? baseView.page ?? 1); + const search = queryParams?.search ?? baseView.search ?? ""; + const view = (0, import_element.useMemo)(() => { + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); + }, [baseView, page, search, activeViewOverrides, defaultView]); + const isModified = !!persistedView; + const updateView = (0, import_element.useCallback)( + (newView) => { + const urlParams = { + page: newView?.page, + search: newView?.search + }; + const preferenceView = stripActiveViewOverrides( + omit(newView, ["page", "search"]), + activeViewOverrides, + defaultView + ); + if (onChangeQueryParams && !dequal(urlParams, { page, search })) { + onChangeQueryParams(urlParams); + } + const comparableBaseView = stripActiveViewOverrides( + baseView, + activeViewOverrides, + defaultView + ); + const comparableDefaultView = stripActiveViewOverrides( + defaultView, + activeViewOverrides, + defaultView + ); + if (!dequal(comparableBaseView, preferenceView)) { + if (dequal(preferenceView, comparableDefaultView)) { + set("core/views", preferenceKey, void 0); + } else { + set("core/views", preferenceKey, preferenceView); + } + } + }, + [ + onChangeQueryParams, + page, + search, + baseView, + defaultView, + activeViewOverrides, + set, + preferenceKey + ] + ); + const resetToDefault = (0, import_element.useCallback)(() => { + set("core/views", preferenceKey, void 0); + }, [preferenceKey, set]); + return { + view, + isModified, + updateView, + resetToDefault + }; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); + +// packages/dataviews/build-module/dataviews/index.mjs +var import_element54 = __toESM(require_element(), 1); +var import_compose12 = __toESM(require_compose(), 1); + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React2 = __toESM(require_react(), 1); +var UNINITIALIZED = {}; +function useRefWithInit(init2, initArg) { + const ref = React2.useRef(UNINITIALIZED); + if (ref.current === UNINITIALIZED) { + ref.current = init2(initArg); + } + return ref; +} + +// node_modules/@base-ui/react/esm/utils/useRenderElement.js +var React5 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useMergedRefs.js +function useMergedRefs(a2, b2, c2, d2) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChange(forkRef, a2, b2, c2, d2)) { + update(forkRef, [a2, b2, c2, d2]); + } + return forkRef.callback; +} +function useMergedRefsN(refs) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChangeN(forkRef, refs)) { + update(forkRef, refs); + } + return forkRef.callback; +} +function createForkRef() { + return { + callback: null, + cleanup: null, + refs: [] + }; +} +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]); +} +function update(forkRef, refs) { + forkRef.refs = refs; + if (refs.every((ref) => ref == null)) { + forkRef.callback = null; + return; + } + forkRef.callback = (instance) => { + if (forkRef.cleanup) { + forkRef.cleanup(); + forkRef.cleanup = null; + } + if (instance != null) { + const cleanupCallbacks = Array(refs.length).fill(null); + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const refCleanup = ref(instance); + if (typeof refCleanup === "function") { + cleanupCallbacks[i2] = refCleanup; + } + break; + } + case "object": { + ref.current = instance; + break; + } + default: + } + } + forkRef.cleanup = () => { + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const cleanupCallback = cleanupCallbacks[i2]; + if (typeof cleanupCallback === "function") { + cleanupCallback(); + } else { + ref(null); + } + break; + } + case "object": { + ref.current = null; + break; + } + default: + } + } + }; + } + }; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +var React4 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/reactVersion.js +var React3 = __toESM(require_react(), 1); +var majorVersion = parseInt(React3.version, 10); +function isReactVersionAtLeast(reactVersionToCheck) { + return majorVersion >= reactVersionToCheck; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +function getReactElementRef(element) { + if (!/* @__PURE__ */ React4.isValidElement(element)) { + return null; + } + const reactElement = element; + const propsWithRef = reactElement.props; + return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; +} + +// node_modules/@base-ui/utils/esm/mergeObjects.js +function mergeObjects(a2, b2) { + if (a2 && !b2) { + return a2; + } + if (!a2 && b2) { + return b2; + } + if (a2 || b2) { + return { + ...a2, + ...b2 + }; + } + return void 0; +} + +// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +function getStateAttributesProps(state, customMapping) { + const props = {}; + for (const key in state) { + const value = state[key]; + if (customMapping?.hasOwnProperty(key)) { + const customProps = customMapping[key](value); + if (customProps != null) { + Object.assign(props, customProps); + } + continue; + } + if (value === true) { + props[`data-${key.toLowerCase()}`] = ""; + } else if (value) { + props[`data-${key.toLowerCase()}`] = value.toString(); + } + } + return props; +} + +// node_modules/@base-ui/react/esm/utils/resolveClassName.js +function resolveClassName(className, state) { + return typeof className === "function" ? className(state) : className; +} + +// node_modules/@base-ui/react/esm/utils/resolveStyle.js +function resolveStyle(style, state) { + return typeof style === "function" ? style(state) : style; +} + +// 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 (b2) { + merged = mergeOne(merged, b2); + } + if (c2) { + merged = mergeOne(merged, c2); + } + if (d2) { + merged = mergeOne(merged, d2); + } + if (e2) { + merged = mergeOne(merged, e2); + } + return merged; +} +function mergePropsN(props) { + if (props.length === 0) { + return EMPTY_PROPS; + } + if (props.length === 1) { + return resolvePropsGetter(props[0], EMPTY_PROPS); + } + let merged = { + ...resolvePropsGetter(props[0], EMPTY_PROPS) + }; + for (let i2 = 1; i2 < props.length; i2 += 1) { + merged = mergeOne(merged, props[i2]); + } + return merged; +} +function mergeOne(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return inputProps(merged); + } + return mutablyMergeInto(merged, inputProps); +} +function mutablyMergeInto(mergedProps, externalProps) { + if (!externalProps) { + return mergedProps; + } + for (const propName in externalProps) { + const externalPropValue = externalProps[propName]; + switch (propName) { + case "style": { + mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); + break; + } + case "className": { + mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); + break; + } + default: { + if (isEventHandler(propName, externalPropValue)) { + mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); + } else { + mergedProps[propName] = externalPropValue; + } + } + } + } + return mergedProps; +} +function isEventHandler(key, value) { + const code0 = key.charCodeAt(0); + const code1 = key.charCodeAt(1); + const code2 = key.charCodeAt(2); + return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); +} +function isPropsGetter(inputProps) { + return typeof inputProps === "function"; +} +function resolvePropsGetter(inputProps, previousProps) { + if (isPropsGetter(inputProps)) { + return inputProps(previousProps); + } + return inputProps ?? EMPTY_PROPS; +} +function mergeEventHandlers(ourHandler, theirHandler) { + if (!theirHandler) { + return ourHandler; + } + if (!ourHandler) { + return theirHandler; + } + return (event) => { + if (isSyntheticEvent(event)) { + const baseUIEvent = event; + makeEventPreventable(baseUIEvent); + const result2 = theirHandler(baseUIEvent); + if (!baseUIEvent.baseUIHandlerPrevented) { + ourHandler?.(baseUIEvent); + } + return result2; + } + const result = theirHandler(event); + ourHandler?.(event); + return result; + }; +} +function makeEventPreventable(event) { + event.preventBaseUIHandler = () => { + event.baseUIHandlerPrevented = true; + }; + return event; +} +function mergeClassNames(ourClassName, theirClassName) { + if (theirClassName) { + if (ourClassName) { + return theirClassName + " " + ourClassName; + } + return theirClassName; + } + return ourClassName; +} +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/useRenderElement.js +var import_react = __toESM(require_react(), 1); +function useRenderElement(element, componentProps, params = {}) { + const renderProp = componentProps.render; + const outProps = useRenderElementProps(componentProps, params); + if (params.enabled === false) { + return null; + } + const state = params.state ?? EMPTY_OBJECT; + return evaluateRenderProp(element, renderProp, outProps, state); +} +function useRenderElementProps(componentProps, params = {}) { + const { + className: classNameProp, + style: styleProp, + render: renderProp + } = componentProps; + const { + state = EMPTY_OBJECT, + ref, + props, + stateAttributesMapping, + 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 outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + if (typeof document !== "undefined") { + if (!enabled) { + useMergedRefs(null, null); + } else if (Array.isArray(ref)) { + outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); + } else { + outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); + } + } + if (!enabled) { + return EMPTY_OBJECT; + } + if (className !== void 0) { + outProps.className = mergeClassNames(outProps.className, className); + } + if (style !== void 0) { + outProps.style = mergeObjects(outProps.style, style); + } + return outProps; +} +function evaluateRenderProp(element, render4, props, state) { + if (render4) { + if (typeof render4 === "function") { + return render4(props, state); + } + const mergedProps = mergeProps(props, render4.props); + mergedProps.ref = props.ref; + return /* @__PURE__ */ React5.cloneElement(render4, 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(8)); +} +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__ */ React5.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// node_modules/clsx/dist/clsx.mjs +function r(e2) { + var t2, f2, n2 = ""; + if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; + else if ("object" == typeof e2) if (Array.isArray(e2)) { + var o2 = e2.length; + for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2); + } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); + return n2; +} +function clsx() { + for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2); + return n2; +} +var clsx_default = clsx; + +// packages/ui/build-module/stack/stack.mjs +var import_element2 = __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"); + 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 Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && `var(--wpds-dimension-gap-${gap})`, + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render: render4, + ref, + props: mergeProps(props, { style, className: style_default.stack }) + }); + return element; +}); + +// packages/icons/build-module/library/archive.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var archive_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( + import_primitives.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z" + } +) }); + +// packages/icons/build-module/library/arrow-down.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var arrow_down_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: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); + +// packages/icons/build-module/library/arrow-left.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var arrow_left_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: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); + +// packages/icons/build-module/library/arrow-right.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var arrow_right_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: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); + +// packages/icons/build-module/library/arrow-up.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var arrow_up_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: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); + +// packages/icons/build-module/library/block-meta.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var block_meta_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + import_primitives6.Path, + { + fillRule: "evenodd", + d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/block-table.mjs +var import_primitives7 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); + +// packages/icons/build-module/library/calendar.mjs +var import_primitives8 = __toESM(require_primitives(), 1); +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var calendar_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z" }) }); + +// packages/icons/build-module/library/category.mjs +var import_primitives9 = __toESM(require_primitives(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var category_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + import_primitives9.Path, + { + d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", + fillRule: "evenodd", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/check.mjs +var import_primitives10 = __toESM(require_primitives(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var check_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives11 = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.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/cog.mjs +var import_primitives12 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var cog_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( + import_primitives12.Path, + { + fillRule: "evenodd", + d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/comment-author-avatar.mjs +var import_primitives13 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var comment_author_avatar_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( + import_primitives13.Path, + { + fillRule: "evenodd", + d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/envelope.mjs +var import_primitives14 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + import_primitives14.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" + } +) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives15 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( + import_primitives15.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/format-list-bullets-rtl.mjs +var import_primitives16 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); + +// packages/icons/build-module/library/format-list-bullets.mjs +var import_primitives17 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); + +// packages/icons/build-module/library/funnel.mjs +var import_primitives18 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); + +// packages/icons/build-module/library/home.mjs +var import_primitives19 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var home_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.Path, { d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z" }) }); + +// packages/icons/build-module/library/layout.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var layout_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.Path, { d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); + +// packages/icons/build-module/library/link.mjs +var import_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var link_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); + +// packages/icons/build-module/library/list.mjs +var import_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var list_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z" }) }); + +// packages/icons/build-module/library/media.mjs +var import_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var media_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ + /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "m7 6.5 4 2.5-4 2.5z" }), + /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( + import_primitives23.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z" + } + ) +] }); + +// packages/icons/build-module/library/mobile.mjs +var import_primitives24 = __toESM(require_primitives(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives25 = __toESM(require_primitives(), 1); +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives26 = __toESM(require_primitives(), 1); +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.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/not-found.mjs +var import_primitives27 = __toESM(require_primitives(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var not_found_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M19 5c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2zM5 6.5c-.3 0-.5.2-.5.5v10c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V7c0-.3-.2-.5-.5-.5zm7.01 2.75q.711 0 1.24.364.533.364.824 1.012.296.645.296 1.488 0 .887-.296 1.556-.292.664-.824 1.036-.528.368-1.24.368-.708 0-1.24-.368-.527-.372-.824-1.036-.296-.668-.296-1.556 0-.848.296-1.492.296-.648.824-1.008a2.14 2.14 0 0 1 1.24-.364m-3.484 3.6h.72v.832h-.72v1.28h-.984v-1.28H4.75l3.08-4.32h.696zm9.522 0h.72v.832h-.72v1.28h-.983v-1.28h-2.793l3.08-4.32h.696zm-6.038-2.696q-.568 0-.952.48-.384.475-.384 1.48 0 .716.176 1.168.176.45.476.66.304.212.684.212t.68-.208q.304-.207.48-.656.176-.451.176-1.176 0-.996-.384-1.476-.38-.484-.952-.484M6.33 12.85h1.212v-1.722zm9.523 0h1.211v-1.722z" }) }); + +// packages/icons/build-module/library/page.mjs +var import_primitives28 = __toESM(require_primitives(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +var page_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_primitives28.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ + /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z" }), + /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z" }) +] }); + +// packages/icons/build-module/library/pencil.mjs +var import_primitives29 = __toESM(require_primitives(), 1); +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +var pencil_default = /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" }) }); + +// packages/icons/build-module/library/pin.mjs +var import_primitives30 = __toESM(require_primitives(), 1); +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +var pin_default = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.Path, { d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z" }) }); + +// packages/icons/build-module/library/post.mjs +var import_primitives31 = __toESM(require_primitives(), 1); +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +var post_default = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.Path, { d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z" }) }); + +// packages/icons/build-module/library/previous.mjs +var import_primitives32 = __toESM(require_primitives(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.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/icons/build-module/library/published.mjs +var import_primitives33 = __toESM(require_primitives(), 1); +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +var published_default = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + import_primitives33.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/icons/build-module/library/scheduled.mjs +var import_primitives34 = __toESM(require_primitives(), 1); +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + import_primitives34.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z" + } +) }); + +// packages/icons/build-module/library/search.mjs +var import_primitives35 = __toESM(require_primitives(), 1); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var search_default = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); + +// packages/icons/build-module/library/seen.mjs +var import_primitives36 = __toESM(require_primitives(), 1); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// packages/icons/build-module/library/tag.mjs +var import_primitives37 = __toESM(require_primitives(), 1); +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +var tag_default = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.Path, { d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" }) }); + +// packages/icons/build-module/library/unseen.mjs +var import_primitives38 = __toESM(require_primitives(), 1); +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); +var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); + +// packages/icons/build-module/library/verse.mjs +var import_primitives39 = __toESM(require_primitives(), 1); +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +var verse_default = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.Path, { d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z" }) }); + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var import_element3 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/constants.mjs +var import_i18n = __toESM(require_i18n(), 1); +var OPERATOR_IS_ANY = "isAny"; +var OPERATOR_IS_NONE = "isNone"; +var OPERATOR_IS_ALL = "isAll"; +var OPERATOR_IS_NOT_ALL = "isNotAll"; +var OPERATOR_BETWEEN = "between"; +var OPERATOR_IN_THE_PAST = "inThePast"; +var OPERATOR_OVER = "over"; +var OPERATOR_IS = "is"; +var OPERATOR_IS_NOT = "isNot"; +var OPERATOR_LESS_THAN = "lessThan"; +var OPERATOR_GREATER_THAN = "greaterThan"; +var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; +var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; +var OPERATOR_BEFORE = "before"; +var OPERATOR_AFTER = "after"; +var OPERATOR_BEFORE_INC = "beforeInc"; +var OPERATOR_AFTER_INC = "afterInc"; +var OPERATOR_CONTAINS = "contains"; +var OPERATOR_NOT_CONTAINS = "notContains"; +var OPERATOR_STARTS_WITH = "startsWith"; +var OPERATOR_ON = "on"; +var OPERATOR_NOT_ON = "notOn"; +var SORTING_DIRECTIONS = ["asc", "desc"]; +var sortArrows = { asc: "\u2191", desc: "\u2193" }; +var sortValues = { asc: "ascending", desc: "descending" }; +var sortLabels = { + asc: (0, import_i18n.__)("Sort ascending"), + desc: (0, import_i18n.__)("Sort descending") +}; +var sortIcons = { + asc: arrow_up_default, + desc: arrow_down_default +}; +var LAYOUT_TABLE = "table"; +var LAYOUT_GRID = "grid"; +var LAYOUT_LIST = "list"; +var LAYOUT_ACTIVITY = "activity"; +var LAYOUT_PICKER_GRID = "pickerGrid"; +var LAYOUT_PICKER_TABLE = "pickerTable"; + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var DataViewsContext = (0, import_element3.createContext)({ + view: { type: LAYOUT_TABLE }, + onChangeView: () => { + }, + fields: [], + data: [], + paginationInfo: { + totalItems: 0, + totalPages: 0 + }, + selection: [], + onChangeSelection: () => { + }, + setOpenedFilter: () => { + }, + openedFilter: null, + getItemId: (item) => item.id, + isItemClickable: () => true, + renderItemLink: void 0, + containerWidth: 0, + containerRef: (0, import_element3.createRef)(), + resizeObserverRef: () => { + }, + defaultLayouts: { list: {}, grid: {}, table: {} }, + filters: [], + isShowingFilter: false, + setIsShowingFilter: () => { + }, + hasInfiniteScrollHandler: false, + config: { + perPageSizes: [] + } +}); +DataViewsContext.displayName = "DataViewsContext"; +var dataviews_context_default = DataViewsContext; + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var import_i18n21 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_i18n9 = __toESM(require_i18n(), 1); +var import_components6 = __toESM(require_components(), 1); +var import_element10 = __toESM(require_element(), 1); +var import_keycodes = __toESM(require_keycodes(), 1); + +// packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs +var import_components = __toESM(require_components(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +function DataViewsSelectionCheckbox({ + selection, + onChangeSelection, + item, + getItemId: getItemId3, + titleField, + disabled, + ...extraProps +}) { + const id = getItemId3(item); + const checked = !disabled && selection.includes(id); + const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n2.__)("(no title)"); + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components.CheckboxControl, + { + className: "dataviews-selection-checkbox", + "aria-label": selectionLabel, + "aria-disabled": disabled, + checked, + onChange: () => { + if (disabled) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + }, + ...extraProps + } + ); +} + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_components2 = __toESM(require_components(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_element4 = __toESM(require_element(), 1); +var import_data3 = __toESM(require_data(), 1); +var import_compose = __toESM(require_compose(), 1); + +// packages/dataviews/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/dataviews" +); + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +var { Menu, kebabCase } = unlock(import_components2.privateApis); +function ButtonTrigger({ + action, + onClick, + items, + variant +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + import_components2.Button, + { + disabled: !!action.disabled, + accessibleWhenDisabled: true, + size: "compact", + variant, + onClick, + children: label + } + ); +} +function MenuItemTrigger({ + action, + onClick, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Menu.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Menu.ItemLabel, { children: label }) }); +} +function ActionModal({ + action, + items, + closeModal +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + import_components2.Modal, + { + title: modalHeader || label, + __experimentalHideHeader: !!action.hideModalHeader, + onRequestClose: closeModal, + focusOnMount: action.modalFocusOnMount ?? true, + size: action.modalSize || "medium", + overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase( + action.id + )}`, + children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(action.RenderModal, { items, closeModal }) + } + ); +} +function ActionsMenuGroup({ + actions, + item, + registry, + setActiveModalAction +}) { + const { primaryActions, regularActions } = (0, import_element4.useMemo)(() => { + return actions.reduce( + (acc, action) => { + (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); + return acc; + }, + { + primaryActions: [], + regularActions: [] + } + ); + }, [actions]); + const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + MenuItemTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item] + }, + action.id + )); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Menu.Group, { children: [ + renderActionGroup(primaryActions), + primaryActions.length > 0 && regularActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Menu.Separator, {}), + renderActionGroup(regularActions) + ] }); +} +function ItemActions({ + item, + actions, + isCompact +}) { + const registry = (0, import_data3.useRegistry)(); + const { primaryActions, eligibleActions } = (0, import_element4.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isCompact) { + return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + isSmall: true, + registry + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( + Stack, + { + direction: "row", + justify: "flex-end", + className: "dataviews-item-actions", + style: { + flexShrink: 0, + width: "auto" + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + registry + } + ) + ] + } + ); +} +function CompactItemActions({ + item, + actions, + isSmall, + registry +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)( + null + ); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Menu, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + Menu.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + import_components2.Button, + { + size: isSmall ? "small" : "compact", + icon: more_vertical_default, + label: (0, import_i18n3.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + className: "dataviews-all-actions-button" + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Menu.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ActionsMenuGroup, + { + actions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} +function PrimaryActions({ + item, + actions, + registry, + buttonVariant +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)(null); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isMobileViewport) { + return null; + } + if (!Array.isArray(actions) || actions.length === 0) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [ + actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ButtonTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item], + variant: buttonVariant + }, + action.id + )), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_components3 = __toESM(require_components(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); +var import_element5 = __toESM(require_element(), 1); +var import_data4 = __toESM(require_data(), 1); +var import_compose2 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/utils/get-footer-message.mjs +var import_i18n4 = __toESM(require_i18n(), 1); +function getFooterMessage(selectionCount, itemsCount, totalItems) { + if (selectionCount > 0) { + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item selected", "%d Items selected", selectionCount), + selectionCount + ); + } + if (totalItems > itemsCount) { + return (0, import_i18n4.sprintf)( + /* translators: %1$d: number of items. %2$d: total number of items. */ + (0, import_i18n4._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), + itemsCount, + totalItems + ); + } + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item", "%d Items", itemsCount), + itemsCount + ); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +function ActionWithModal({ + action, + items, + ActionTriggerComponent +}) { + const [isModalOpen, setIsModalOpen] = (0, import_element5.useState)(false); + const actionTriggerProps = { + action, + onClick: () => { + setIsModalOpen(true); + }, + items + }; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), + isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActionModal, + { + action, + items, + closeModal: () => setIsModalOpen(false) + } + ) + ] }); +} +function useHasAPossibleBulkAction(actions, item) { + return (0, import_element5.useMemo)(() => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }, [actions, item]); +} +function useSomeItemHasAPossibleBulkAction(actions, data) { + return (0, import_element5.useMemo)(() => { + return data.some((item) => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }); + }, [actions, data]); +} +function BulkSelectionCheckbox({ + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId3 +}) { + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return actions.some( + (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) + ); + }); + }, [data, actions]); + const selectedItems = data.filter( + (item) => selection.includes(getItemId3(item)) && selectableItems.includes(item) + ); + const areAllSelected = selectedItems.length === selectableItems.length; + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components3.CheckboxControl, + { + className: "dataviews-view-table-selection-checkbox", + checked: areAllSelected, + indeterminate: !areAllSelected && !!selectedItems.length, + onChange: () => { + if (areAllSelected) { + onChangeSelection([]); + } else { + onChangeSelection( + selectableItems.map((item) => getItemId3(item)) + ); + } + }, + "aria-label": areAllSelected ? (0, import_i18n5.__)("Deselect all") : (0, import_i18n5.__)("Select all") + } + ); +} +function ActionTrigger({ + action, + onClick, + isBusy, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + if (isMobile) { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + label, + icon: action.icon, + size: "compact", + onClick, + isBusy + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + size: "compact", + onClick, + isBusy, + children: label + } + ); +} +var EMPTY_ARRAY2 = []; +function ActionButton({ + action, + selectedItems, + actionInProgress, + setActionInProgress +}) { + const registry = (0, import_data4.useRegistry)(); + const selectedEligibleItems = (0, import_element5.useMemo)(() => { + return selectedItems.filter((item) => { + return !action.isEligible || action.isEligible(item); + }); + }, [action, selectedItems]); + if ("RenderModal" in action) { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActionWithModal, + { + action, + items: selectedEligibleItems, + ActionTriggerComponent: ActionTrigger + }, + action.id + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActionTrigger, + { + action, + onClick: async () => { + setActionInProgress(action.id); + await action.callback(selectedItems, { + registry + }); + setActionInProgress(null); + }, + items: selectedEligibleItems, + isBusy: actionInProgress === action.id + }, + action.id + ); +} +function renderFooterContent(data, actions, getItemId3, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { + const message2 = getFooterMessage( + selection.length, + data.length, + paginationInfo.totalItems + ); + return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__container", + gap: "md", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId3 + } + ), + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), + /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__action-buttons", + gap: "xs", + children: [ + actionsToShow.map((action) => { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ActionButton, + { + action, + selectedItems, + actionInProgress, + setActionInProgress + }, + action.id + ); + }), + selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components3.Button, + { + icon: close_small_default, + showTooltip: true, + tooltipPosition: "top", + size: "compact", + label: (0, import_i18n5.__)("Cancel"), + disabled: !!actionInProgress, + accessibleWhenDisabled: false, + onClick: () => { + onChangeSelection(EMPTY_ARRAY2); + } + } + ) + ] + } + ) + ] + } + ); +} +function FooterContent({ + selection, + actions, + onChangeSelection, + data, + getItemId: getItemId3, + paginationInfo +}) { + const [actionInProgress, setActionInProgress] = (0, import_element5.useState)( + null + ); + const footerContentRef = (0, import_element5.useRef)(null); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + const bulkActions = (0, import_element5.useMemo)( + () => actions.filter((action) => action.supportsBulk), + [actions] + ); + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return bulkActions.some( + (action) => !action.isEligible || action.isEligible(item) + ); + }); + }, [data, bulkActions]); + const selectedItems = (0, import_element5.useMemo)(() => { + return data.filter( + (item) => selection.includes(getItemId3(item)) && selectableItems.includes(item) + ); + }, [selection, data, getItemId3, selectableItems]); + const actionsToShow = (0, import_element5.useMemo)( + () => actions.filter((action) => { + return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( + (item) => !action.isEligible || action.isEligible(item) + ); + }), + [actions, selectedItems, isMobile] + ); + if (!actionInProgress) { + if (footerContentRef.current) { + footerContentRef.current = null; + } + return renderFooterContent( + data, + actions, + getItemId3, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } else if (!footerContentRef.current) { + footerContentRef.current = renderFooterContent( + data, + actions, + getItemId3, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } + return footerContentRef.current; +} +function BulkActionsFooter() { + const { + data, + selection, + actions = EMPTY_ARRAY2, + onChangeSelection, + getItemId: getItemId3, + paginationInfo + } = (0, import_element5.useContext)(dataviews_context_default); + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + FooterContent, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId3, + paginationInfo + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_i18n6 = __toESM(require_i18n(), 1); +var import_components4 = __toESM(require_components(), 1); +var import_element6 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/utils/get-hideable-fields.mjs +function getHideableFields(view, fields) { + const togglableFields = [ + view?.titleField, + view?.mediaField, + view?.descriptionField + ].filter(Boolean); + return fields.filter( + (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock(import_components4.privateApis); +function WithMenuSeparators({ children }) { + return import_element6.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_element6.Fragment, { children: [ + i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Separator, {}), + child + ] }, i2)); +} +var _HeaderMenu = (0, import_element6.forwardRef)(function HeaderMenu({ + fieldId, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove = true, + canInsertLeft = true, + canInsertRight = true +}, ref) { + const visibleFieldIds = view.fields ?? []; + const index = visibleFieldIds?.indexOf(fieldId); + const isSorted = view.sort?.field === fieldId; + let isHidable = false; + let isSortable = false; + let canAddFilter = false; + let operators = []; + const field = fields.find((f2) => f2.id === fieldId); + const { setIsShowingFilter } = (0, import_element6.useContext)(dataviews_context_default); + if (!field) { + return null; + } + isHidable = field.enableHiding !== false; + isSortable = field.enableSorting !== false; + const header = field.header; + operators = !!field.filterBy && field.filterBy?.operators || []; + canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; + if (!isSortable && !canMove && !isHidable && !canAddFilter) { + return header; + } + const hiddenFields = getHideableFields(view, fields).filter( + (f2) => !visibleFieldIds.includes(f2.id) + ); + const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; + const isRtl = (0, import_i18n6.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)( + Menu2.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + import_components4.Button, + { + size: "compact", + className: "dataviews-view-table-header-button", + ref, + variant: "tertiary" + } + ), + children: [ + header, + view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(WithMenuSeparators, { children: [ + isSortable && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Group, { children: SORTING_DIRECTIONS.map( + (direction) => { + const isChecked = view.sort && isSorted && view.sort.direction === direction; + const value = `${fieldId}-${direction}`; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.RadioItem, + { + name: "view-table-sorting", + value, + checked: isChecked, + onChange: () => { + onChangeView({ + ...view, + sort: { + field: fieldId, + direction + }, + showLevels: false + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: sortLabels[direction] }) + }, + value + ); + } + ) }), + canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components4.Icon, { icon: funnel_default }), + onClick: () => { + setOpenedFilter(fieldId); + setIsShowingFilter(true); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: fieldId, + value: void 0, + operator: operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Add filter") }) + } + ) }), + (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Menu2.Group, { children: [ + canMove && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components4.Icon, { icon: arrow_left_default }), + disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, + onClick: () => { + const targetIndex = isRtl ? index + 1 : index - 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move left") }) + } + ), + canMove && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components4.Icon, { icon: arrow_right_default }), + disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, + onClick: () => { + const targetIndex = isRtl ? index - 1 : index + 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move right") }) + } + ), + canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert left") }) }), + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index + 1 : index; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert right") }) }), + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index : index + 1; + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components4.Icon, { icon: unseen_default }), + onClick: () => { + onHide(field); + onChangeView({ + ...view, + fields: visibleFieldIds.filter( + (id) => id !== fieldId + ) + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Hide column") }) + } + ) + ] }) + ] }) }) + ] }); +}); +var ColumnHeaderMenu = _HeaderMenu; +var column_header_menu_default = ColumnHeaderMenu; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs +var import_element7 = __toESM(require_element(), 1); +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +function getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className +}) { + if (!isItemClickable(item) || !onClickItem) { + return { className }; + } + return { + className: className ? `${className} ${className}--clickable` : void 0, + role: "button", + tabIndex: 0, + onClick: (event) => { + event.stopPropagation(); + onClickItem(item); + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + onClickItem(item); + } + } + }; +} +function ItemClickWrapper({ + item, + isItemClickable, + onClickItem, + renderItemLink, + className, + children, + ...extraProps +}) { + if (!isItemClickable(item)) { + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className, ...extraProps, children }); + } + if (renderItemLink) { + const renderedElement = renderItemLink({ + item, + className: `${className} ${className}--clickable`, + ...extraProps, + children + }); + return (0, import_element7.cloneElement)(renderedElement, { + onClick: (event) => { + event.stopPropagation(); + if (renderedElement.props.onClick) { + renderedElement.props.onClick(event); + } + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + if (renderedElement.props.onKeyDown) { + renderedElement.props.onKeyDown(event); + } + } + } + }); + } + const clickProps = getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className + }); + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { ...clickProps, ...extraProps, children }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +function ColumnPrimary({ + item, + level, + titleField, + mediaField, + descriptionField: descriptionField2, + onClickItem, + renderItemLink, + isItemClickable +}) { + return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ + mediaField && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", + "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "32px" } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( + Stack, + { + direction: "column", + align: "flex-start", + className: "dataviews-view-table__primary-column-content", + children: [ + titleField && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", + children: [ + level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: "dataviews-view-table__level", children: [ + Array(level).fill("\u2014").join(" "), + "\xA0" + ] }), + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(titleField.render, { item, field: titleField }) + ] + } + ), + descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( + descriptionField2.render, + { + item, + field: descriptionField2 + } + ) + ] + } + ) + ] }); +} +var column_primary_default = ColumnPrimary; + +// packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs +var import_compose3 = __toESM(require_compose(), 1); +var import_element8 = __toESM(require_element(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); +var isScrolledToEnd = (element) => { + if ((0, import_i18n7.isRTL)()) { + const scrollLeft = Math.abs(element.scrollLeft); + return scrollLeft <= 1; + } + return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; +}; +function useIsHorizontalScrollEnd({ + scrollContainerRef, + enabled = false +}) { + const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element8.useState)(false); + const handleIsHorizontalScrollEnd = (0, import_compose3.useDebounce)( + (0, import_element8.useCallback)(() => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); + } + }, [scrollContainerRef, setIsHorizontalScrollEnd]), + 200 + ); + (0, import_element8.useEffect)(() => { + if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { + return () => { + }; + } + handleIsHorizontalScrollEnd(); + scrollContainerRef.current.addEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.addEventListener("resize", handleIsHorizontalScrollEnd); + return () => { + scrollContainerRef.current?.removeEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.removeEventListener("resize", handleIsHorizontalScrollEnd); + }; + }, [scrollContainerRef, enabled]); + return isHorizontalScrollEnd; +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs +function getDataByGroup(data, groupByField) { + return data.reduce((groups, item) => { + const groupName = groupByField.getValue({ item }); + if (!groups.has(groupName)) { + groups.set(groupName, []); + } + groups.get(groupName)?.push(item); + return groups; + }, /* @__PURE__ */ new Map()); +} + +// packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs +var import_components5 = __toESM(require_components(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); +var import_element9 = __toESM(require_element(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +function FieldItem({ + field, + isVisible: isVisible2, + onToggleVisibility +}) { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components5.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components5.Icon, { icon: check_default }) }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) + ] }) }); +} +function isDefined(item) { + return !!item; +} +function PropertiesSection({ + showLabel = true +}) { + const { view, fields, onChangeView } = (0, import_element9.useContext)(dataviews_context_default); + const regularFields = getHideableFields(view, fields); + if (!regularFields?.length) { + return null; + } + const titleField = fields.find((f2) => f2.id === view.titleField); + const previewField2 = fields.find((f2) => f2.id === view.mediaField); + const descriptionField2 = fields.find( + (f2) => f2.id === view.descriptionField + ); + const lockedFields = [ + { + field: titleField, + isVisibleFlag: "showTitle" + }, + { + field: previewField2, + isVisibleFlag: "showMedia" + }, + { + field: descriptionField2, + isVisibleFlag: "showDescription" + } + ].filter(({ field }) => isDefined(field)); + const visibleFieldIds = view.fields ?? []; + const visibleRegularFieldsCount = regularFields.filter( + (f2) => visibleFieldIds.includes(f2.id) + ).length; + const visibleLockedFields = lockedFields.filter( + ({ isVisibleFlag }) => ( + // @ts-expect-error + view[isVisibleFlag] ?? true + ) + ); + const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; + const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ + showLabel && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components5.BaseControl.VisualLabel, { children: (0, import_i18n8.__)("Properties") }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config__properties", + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_components5.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ + lockedFields.map(({ field, isVisibleFlag }) => { + const isVisible2 = view[isVisibleFlag] ?? true; + const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + [isVisibleFlag]: !isVisible2 + }); + } + }, + field.id + ); + }), + regularFields.map((field) => { + const isVisible2 = visibleFieldIds.includes(field.id); + const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + fields: isVisible2 ? visibleFieldIds.filter( + (fieldId) => fieldId !== field.id + ) : [...visibleFieldIds, field.id] + }); + } + }, + field.id + ); + }) + ] }) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +function TableColumnField({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(field.render, { item, field }) }); +} +function TableRow({ + hasBulkActions, + item, + level, + actions, + fields, + id, + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + isItemClickable, + onClickItem, + renderItemLink, + onChangeSelection, + isActionsColumnSticky, + posinset +}) { + const { paginationInfo } = (0, import_element10.useContext)(dataviews_context_default); + const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); + const isSelected2 = hasPossibleBulkAction && selection.includes(id); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const isTouchDeviceRef = (0, import_element10.useRef)(false); + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": hasPossibleBulkAction && isSelected2, + "has-bulk-actions": hasPossibleBulkAction + }), + onTouchStart: () => { + isTouchDeviceRef.current = true; + }, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : void 0, + onMouseDown: (event) => { + const isMetaClick = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { + event?.preventDefault(); + } + }, + onClick: (event) => { + if (!hasPossibleBulkAction) { + return; + } + const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId3, + titleField, + disabled: !hasPossibleBulkAction + } + ) }) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_primary_default, + { + item, + level, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField2 : void 0, + isItemClickable, + onClickItem, + renderItemLink + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableColumnField, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }), + !!actions?.length && // Disable reason: we are not making the element interactive, + // but preventing any click events from bubbling up to the + // table row. This allows us to add a click handler to the row + // itself (to toggle row selection) without erroneously + // intercepting click events from ItemActions. + /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + className: clsx_default("dataviews-view-table__actions-column", { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": isActionsColumnSticky + }), + onClick: (e2) => e2.stopPropagation(), + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ItemActions, { item, actions }) + } + ) + ] + } + ); +} +function ViewTable({ + actions, + data, + fields, + getItemId: getItemId3, + getItemLevel, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + view, + className, + empty +}) { + const { containerRef } = (0, import_element10.useContext)(dataviews_context_default); + const headerMenuRefs = (0, import_element10.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element10.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element10.useState)(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element10.useState)(null); + (0, import_element10.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element10.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const handleHeaderContextMenu = (event) => { + event.preventDefault(); + event.stopPropagation(); + const virtualAnchor = { + getBoundingClientRect: () => ({ + x: event.clientX, + y: event.clientY, + top: event.clientY, + left: event.clientX, + right: event.clientX, + bottom: event.clientY, + width: 0, + height: 0, + toJSON: () => ({}) + }) + }; + window.requestAnimationFrame(() => { + setContextMenuAnchor(virtualAnchor); + }); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField2 = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const isRtl = (0, import_i18n9.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "table", + { + className: clsx_default("dataviews-view-table", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ), + "has-bulk-actions": hasBulkActions + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("colgroup", { children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("col", { className: "dataviews-view-table__col-first-data" }), + columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "col", + { + className: clsx_default( + `dataviews-view-table__col-${column}`, + { + "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 + } + ) + }, + `col-${column}` + )), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("col", { className: "dataviews-view-table__col-actions" }) + ] }), + contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components6.Popover, + { + anchor: contextMenuAnchor, + onClose: () => setContextMenuAnchor(null), + placement: "bottom-start", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PropertiesSection, { showLabel: false }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("tr", { className: "dataviews-view-table__row", children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "th", + { + className: "dataviews-view-table__checkbox-column", + scope: "col", + onContextMenu: handleHeaderContextMenu, + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId3 + } + ) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false, + canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, + canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: canInsertOrMove, + canInsertLeft: canInsertOrMove, + canInsertRight: canInsertOrMove + } + ) + }, + column + ); + }), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "th", + { + className: clsx_default( + "dataviews-view-table__actions-column", + { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd + } + ), + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n9.__)("Actions") }) + } + ) + ] }) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("tbody", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), + className: "dataviews-view-table__group-header-cell", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n9.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n9.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) }), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId3(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd + }, + getItemId3(item) + )) + ] }, `group-${groupName}`) + ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId3(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd, + posinset: isInfiniteScroll ? index + 1 : void 0 + }, + getItemId3(item) + )) }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components6.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components6.Spinner, {}) }) + ] + } + ) + ] }); +} +var table_default = ViewTable; + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_components9 = __toESM(require_components(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_components8 = __toESM(require_components(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); +var import_compose4 = __toESM(require_compose(), 1); +var import_keycodes2 = __toESM(require_keycodes(), 1); +var import_element12 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs +var import_components7 = __toESM(require_components(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); +var import_element11 = __toESM(require_element(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +var imageSizes = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; +function useGridColumns() { + const context = (0, import_element11.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element11.useMemo)(() => { + const containerWidth = context.containerWidth; + const gap = 32; + const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; + const columns = Math.floor( + (containerWidth + gap) / (previewSize + gap) + ); + return Math.max(1, columns); + }, [context.containerWidth, view.layout?.previewSize]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var { Badge } = unlock(import_components8.privateApis); +function chunk(array, size) { + const chunks = []; + for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { + chunks.push(array.slice(i2, i2 + size)); + } + return chunks; +} +var GridItem = (0, import_element12.forwardRef)(function GridItem2({ + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId3, + item, + actions, + mediaField, + titleField, + descriptionField: descriptionField2, + regularFields, + badgeFields, + hasBulkActions, + config, + ...props +}, ref) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasBulkAction = useHasAPossibleBulkAction(actions, item); + const id = getItemId3(item); + const instanceId = (0, import_compose4.useInstanceId)(GridItem2); + const isSelected2 = selection.includes(id); + const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); + const rendersMediaField = showMedia && mediaField?.render; + const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : mediaPlaceholder; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(titleField.render, { item, field: titleField }) : null; + let mediaA11yProps; + let titleA11yProps; + if (isItemClickable(item) && onClickItem) { + if (renderedTitleField) { + mediaA11yProps = { + "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` + }; + titleA11yProps = { + id: `dataviews-view-grid__title-field-${instanceId}` + }; + } else { + mediaA11yProps = { + "aria-label": (0, import_i18n11.__)("Navigate to item") + }; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)( + Stack, + { + direction: "column", + ...props, + ref, + className: clsx_default( + props.className, + "dataviews-view-grid__row__gridcell", + "dataviews-view-grid__card", + { + "is-selected": hasBulkAction && isSelected2 + } + ), + onClickCapture: (event) => { + props.onClickCapture?.(event); + if ((0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey) { + event.stopPropagation(); + event.preventDefault(); + if (!hasBulkAction) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: clsx_default("dataviews-view-grid__media", { + "dataviews-view-grid__media--placeholder": !rendersMediaField + }), + ...mediaA11yProps, + children: renderedMediaField + } + ), + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId3, + titleField, + disabled: !hasBulkAction + } + ), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ItemActions, { item, actions, isCompact: true }) }), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-grid__title-field dataviews-title-field", + ...titleA11yProps, + title: titleField?.getValueFormatted({ + item, + field: titleField + }) || void 0, + children: renderedTitleField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + descriptionField2.render, + { + item, + field: descriptionField2 + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + Badge, + { + className: "dataviews-view-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components8.Flex, + { + className: "dataviews-view-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components8.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components8.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components8.FlexItem, + { + className: "dataviews-view-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + } + ); +}); +function CompositeGrid({ + data, + isInfiniteScroll, + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId3, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element12.useContext)(dataviews_context_default); + const gridColumns = useGridColumns(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField2 = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const size = "900px"; + const totalRows = Math.ceil(data.length / gridColumns); + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components8.Composite, + { + role: isInfiniteScroll ? "feed" : "grid", + className: clsx_default("dataviews-view-grid", className), + focusWrap: true, + "aria-busy": isLoading, + "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, + ref: resizeObserverRef, + children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components8.Composite.Row, + { + render: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + "div", + { + role: "row", + "aria-rowindex": i2 + 1, + "aria-label": (0, import_i18n11.sprintf)( + /* translators: %d: The row number in the grid */ + (0, import_i18n11.__)("Row %d"), + i2 + 1 + ), + className: "dataviews-view-grid__row", + style: { + gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` + } + } + ), + children: row.map((item, indexInRow) => { + const index = i2 * gridColumns + indexInRow; + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components8.Composite.Item, + { + render: (props) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + GridItem, + { + ...props, + role: isInfiniteScroll ? "article" : "gridcell", + "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, + "aria-posinset": isInfiniteScroll ? index + 1 : void 0, + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId3, + item, + actions, + mediaField, + titleField, + descriptionField: descriptionField2, + regularFields, + badgeFields, + hasBulkActions, + config: { + sizes: size + } + } + ) + }, + getItemId3(item) + ); + }) + }, + i2 + )) + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +function ViewGrid({ + actions, + data, + fields, + getItemId: getItemId3, + isLoading, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + selection, + view, + className, + empty +}) { + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const gridProps = { + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId3, + actions + }; + return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n12.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n12.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + CompositeGrid, + { + ...gridProps, + data: groupItems, + isInfiniteScroll: false + } + ) + ] + }, + groupName + ) + ) }), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components9.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components9.Spinner, {}) }) + ] + }); +} +var grid_default = ViewGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs +var import_compose5 = __toESM(require_compose(), 1); +var import_components10 = __toESM(require_components(), 1); +var import_element13 = __toESM(require_element(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); +var import_data5 = __toESM(require_data(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock(import_components10.privateApis); +function generateItemWrapperCompositeId(idPrefix) { + return `${idPrefix}-item-wrapper`; +} +function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { + return `${idPrefix}-primary-action-${primaryActionId}`; +} +function generateDropdownTriggerCompositeId(idPrefix) { + return `${idPrefix}-dropdown`; +} +function PrimaryActionGridCell({ + idPrefix, + primaryAction, + item +}) { + const registry = (0, import_data5.useRegistry)(); + const [isModalOpen, setIsModalOpen] = (0, import_element13.useState)(false); + const compositeItemId = generatePrimaryActionCompositeId( + idPrefix, + primaryAction.id + ); + const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); + return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + text: label, + size: "small", + onClick: () => setIsModalOpen(true) + } + ), + children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + ActionModal, + { + action: primaryAction, + items: [item], + closeModal: () => setIsModalOpen(false) + } + ) + } + ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + size: "small", + onClick: () => { + primaryAction.callback([item], { registry }); + }, + children: label + } + ) + } + ) }, primaryAction.id); +} +function ListItem({ + view, + actions, + idPrefix, + isSelected: isSelected2, + item, + titleField, + mediaField, + descriptionField: descriptionField2, + onSelect, + otherFields, + onDropdownTriggerKeyDown, + posinset +}) { + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element13.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element13.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element13.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element13.useContext)(dataviews_context_default); + (0, import_element13.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element13.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryAction: _primaryActions[0], + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; + const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "52px" } + } + ) }) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(titleField.render, { item, field: titleField }) : null; + const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + Stack, + { + direction: "row", + gap: "md", + className: "dataviews-view-list__item-actions", + children: [ + primaryAction && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + PrimaryActionGridCell, + { + idPrefix, + primaryAction, + item + } + ), + !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { role: "gridcell", children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Menu3, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + Menu3.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite.Item, + { + id: generateDropdownTriggerCompositeId( + idPrefix + ), + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Button, + { + size: "small", + icon: more_vertical_default, + label: (0, import_i18n13.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + onKeyDown: onDropdownTriggerKeyDown + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Menu3.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + ActionsMenuGroup, + { + actions: eligibleActions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }) + ] + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite.Row, + { + ref: itemRef, + render: ( + /* aria-posinset breaks Composite.Row if passed to it directly. */ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + "div", + { + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 + } + ) + ), + role: infiniteScrollEnabled ? "article" : "row", + className: clsx_default({ + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleHover, + onMouseLeave: handleHover, + children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-view-list__item-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite.Item, + { + id: generateItemWrapperCompositeId(idPrefix), + "aria-pressed": isSelected2, + "aria-labelledby": labelId, + "aria-describedby": descriptionId, + className: "dataviews-view-list__item", + onClick: () => onSelect(item) + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + Stack, + { + direction: "row", + gap: "md", + justify: "start", + align: "flex-start", + style: { flex: 1, minWidth: 0 }, + children: [ + renderedMediaField, + /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + Stack, + { + direction: "column", + gap: "xs", + className: "dataviews-view-list__field-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Stack, { direction: "row", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + "div", + { + className: "dataviews-title-field dataviews-view-list__title-field", + id: labelId, + children: renderedTitleField + } + ), + usedActions + ] }), + showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + descriptionField2.render, + { + item, + field: descriptionField2 + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + "div", + { + className: "dataviews-view-list__fields", + id: descriptionId, + children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + "div", + { + className: "dataviews-view-list__field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.VisuallyHidden, + { + as: "span", + className: "dataviews-view-list__field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) + } + ) + ] + } + ) + ] + } + ) + ] + } + ) + } + ); +} +function isDefined2(item) { + return !!item; +} +function ViewList(props) { + const { + actions, + data, + fields, + getItemId: getItemId3, + isLoading, + onChangeSelection, + selection, + view, + className, + empty + } = props; + const baseId = (0, import_compose5.useInstanceId)(ViewList, "view-list"); + const selectedItem = data?.findLast( + (item) => selection.includes(getItemId3(item)) + ); + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField2 = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); + const onSelect = (item) => onChangeSelection([getItemId3(item)]); + const generateCompositeItemIdPrefix = (0, import_element13.useCallback)( + (item) => `${baseId}-${getItemId3(item)}`, + [baseId, getItemId3] + ); + const isActiveCompositeItem = (0, import_element13.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element13.useState)(void 0); + (0, import_element13.useEffect)(() => { + if (selectedItem) { + setActiveCompositeId( + generateItemWrapperCompositeId( + generateCompositeItemIdPrefix(selectedItem) + ) + ); + } + }, [selectedItem, generateCompositeItemIdPrefix]); + const activeItemIndex = data.findIndex( + (item) => isActiveCompositeItem(item, activeCompositeId ?? "") + ); + const previousActiveItemIndex = (0, import_compose5.usePrevious)(activeItemIndex); + const isActiveIdInList = activeItemIndex !== -1; + const selectCompositeItem = (0, import_element13.useCallback)( + (targetIndex, generateCompositeId) => { + const clampedIndex = Math.min( + data.length - 1, + Math.max(0, targetIndex) + ); + if (!data[clampedIndex]) { + return; + } + const itemIdPrefix = generateCompositeItemIdPrefix( + data[clampedIndex] + ); + const targetCompositeItemId = generateCompositeId(itemIdPrefix); + setActiveCompositeId(targetCompositeItemId); + document.getElementById(targetCompositeItemId)?.focus(); + }, + [data, generateCompositeItemIdPrefix] + ); + (0, import_element13.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element13.useCallback)( + (event) => { + if (event.key === "ArrowDown") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex + 1, + generateDropdownTriggerCompositeId + ); + } + if (event.key === "ArrowUp") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex - 1, + generateDropdownTriggerCompositeId + ); + } + }, + [selectCompositeItem, activeItemIndex] + ); + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components10.Spinner, {}) }) : empty) + } + ); + } + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite, + { + id: `${baseId}`, + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {}), + className: "dataviews-view-list__group", + role: "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + Stack, + { + direction: "column", + gap: "lg", + className: clsx_default("dataviews-view-list", className), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n13.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n13.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + groupItems.map((item) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField: descriptionField2, + otherFields, + onDropdownTriggerKeyDown + }, + id + ); + }) + ] + }, + groupName + ) + ) + } + ) + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components10.Composite, + { + id: baseId, + render: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {}), + className: clsx_default("dataviews-view-list", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: data.map((item, index) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField: descriptionField2, + otherFields, + onDropdownTriggerKeyDown, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + }, + id + ); + }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components10.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_components12 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs +var import_i18n14 = __toESM(require_i18n(), 1); +var import_element14 = __toESM(require_element(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +function ActivityGroup({ + groupName, + groupData, + groupField, + showLabel = true, + children +}) { + const groupHeader = showLabel ? (0, import_element14.createInterpolateElement)( + // translators: %s: The label of the field e.g. "Status". + (0, import_i18n14.sprintf)((0, import_i18n14.__)("%s: "), groupField.label).trim(), + { + groupName: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + groupField.render, + { + item: groupData[0], + field: groupField + } + ) + } + ) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(groupField.render, { item: groupData[0], field: groupField }); + return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-activity__group", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), + children + ] + }, + groupName + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs +var import_components11 = __toESM(require_components(), 1); +var import_element15 = __toESM(require_element(), 1); +var import_data6 = __toESM(require_data(), 1); +var import_compose6 = __toESM(require_compose(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +function ActivityItem(props) { + const { + view, + actions, + item, + titleField, + mediaField, + descriptionField: descriptionField2, + otherFields, + posinset, + onClickItem, + renderItemLink, + isItemClickable + } = props; + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element15.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element15.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element15.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose6.useViewportMatch)("medium", "<"); + const density = view.layout?.density ?? "balanced"; + const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { + sizes: density === "comfortable" ? "32px" : "24px" + } + } + ) : null; + const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + "span", + { + className: "dataviews-view-activity__item-bullet", + "aria-hidden": "true" + } + ) }); + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(titleField.render, { item, field: titleField }) : null; + const verticalGap = (0, import_element15.useMemo)(() => { + switch (density) { + case "comfortable": + return "md"; + default: + return "sm"; + } + }, [density]); + return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + "div", + { + ref: itemRef, + role: infiniteScrollEnabled ? "article" : void 0, + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + className: clsx_default( + "dataviews-view-activity__item", + density === "compact" && "is-compact", + density === "balanced" && "is-balanced", + density === "comfortable" && "is-comfortable" + ), + children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + Stack, + { + direction: "column", + gap: "xs", + align: "center", + className: "dataviews-view-activity__item-type", + children: renderedMediaField + } + ), + /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( + Stack, + { + direction: "column", + gap: verticalGap, + align: "flex-start", + className: "dataviews-view-activity__item-content", + children: [ + renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-activity__item-title", + children: renderedTitleField + } + ), + showDescription && descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + descriptionField2.render, + { + item, + field: descriptionField2 + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( + "div", + { + className: "dataviews-view-activity__item-field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + import_components11.VisuallyHidden, + { + as: "span", + className: "dataviews-view-activity__item-field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) }), + !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry, + buttonVariant: "secondary" + } + ) + ] + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport && // At the same time, only show the menu if there are actions to show. + eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + ItemActions, + { + item, + actions: eligibleActions, + isCompact: true + } + ) }) + ] }) + } + ); +} +var activity_item_default = ActivityItem; + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs +var import_react3 = __toESM(require_react(), 1); +function isDefined3(item) { + return !!item; +} +function ActivityItems(props) { + const { data, fields, getItemId: getItemId3, view } = props; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField2 = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); + return data.map((item, index) => { + return /* @__PURE__ */ (0, import_react3.createElement)( + activity_item_default, + { + ...props, + key: getItemId3(item), + item, + mediaField, + titleField, + descriptionField: descriptionField2, + otherFields, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + } + ); + }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +function ViewActivity(props) { + const { empty, data, fields, isLoading, view, className } = props; + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components12.Spinner, {}) }) : empty) + } + ); + } + const wrapperClassName = clsx_default("dataviews-view-activity", className); + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Stack, { direction: "column", gap: "sm", className: wrapperClassName, children: groupedEntries.map( + ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ActivityGroup, + { + groupName, + groupData, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + ActivityItems, + { + ...props, + data: groupData + } + ) + }, + groupName + ) + ) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "div", + { + className: wrapperClassName, + role: view.infiniteScrollEnabled ? "feed" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ActivityItems, { ...props }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components12.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_components15 = __toESM(require_components(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); +var import_compose7 = __toESM(require_compose(), 1); +var import_element19 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_components14 = __toESM(require_components(), 1); +var import_data7 = __toESM(require_data(), 1); +var import_element17 = __toESM(require_element(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-pagination/index.mjs +var import_components13 = __toESM(require_components(), 1); +var import_element16 = __toESM(require_element(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +function DataViewsPagination() { + const { + view, + onChangeView, + paginationInfo: { totalItems = 0, totalPages } + } = (0, import_element16.useContext)(dataviews_context_default); + if (!totalItems || !totalPages || view.infiniteScrollEnabled) { + return null; + } + const currentPage = view.page ?? 1; + const pageSelectOptions = Array.from(Array(totalPages)).map( + (_, i2) => { + const page = i2 + 1; + return { + value: page.toString(), + label: page.toString(), + "aria-label": currentPage === page ? (0, import_i18n15.sprintf)( + // translators: 1: current page number. 2: total number of pages. + (0, import_i18n15.__)("Page %1$d of %2$d"), + currentPage, + totalPages + ) : page.toString() + }; + } + ); + return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-pagination", + justify: "end", + align: "center", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + align: "center", + gap: "xs", + className: "dataviews-pagination__page-select", + children: (0, import_element16.createInterpolateElement)( + (0, import_i18n15.sprintf)( + // translators: 1: Current page number, 2: Total number of pages. + (0, import_i18n15._x)( + "
      Page
      %1$s
      of %2$d
      ", + "paging" + ), + "", + totalPages + ), + { + div: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { "aria-hidden": true }), + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + import_components13.SelectControl, + { + "aria-label": (0, import_i18n15.__)("Current page"), + value: currentPage.toString(), + options: pageSelectOptions, + onChange: (newValue) => { + onChangeView({ + ...view, + page: +newValue + }); + }, + size: "small", + variant: "minimal" + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ + ...view, + page: currentPage - 1 + }), + disabled: currentPage === 1, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Previous page"), + icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ ...view, page: currentPage + 1 }), + disabled: currentPage >= totalPages, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Next page"), + icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ) + ] }) + ] + } + ); +} +var dataviews_pagination_default = (0, import_element16.memo)(DataViewsPagination); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +function useIsMultiselectPicker(actions) { + return (0, import_element17.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element18.forwardRef)(({ className, previewSize, ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( + "div", + { + ref, + className: clsx_default("dataviews-view-grid-items", className), + style: { + gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` + }, + ...props + } + ); +}); + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +var { Badge: Badge2 } = unlock(import_components15.privateApis); +function GridItem3({ + view, + multiselect, + selection, + onChangeSelection, + getItemId: getItemId3, + item, + mediaField, + titleField, + descriptionField: descriptionField2, + regularFields, + badgeFields, + config, + posinset, + setsize +}) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const id = getItemId3(item); + const isSelected2 = selection.includes(id); + const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(titleField.render, { item, field: titleField }) : null; + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + import_components15.Composite.Item, + { + "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n17.__)("(no title)") : void 0, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Stack, { direction: "column", children, ...props }), + role: "option", + "aria-posinset": posinset, + "aria-setsize": setsize, + className: clsx_default("dataviews-view-picker-grid__card", { + "is-selected": isSelected2 + }), + "aria-selected": isSelected2, + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId3, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Stack, + { + direction: "row", + justify: "space-between", + className: "dataviews-view-picker-grid__title-actions", + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + descriptionField2.render, + { + item, + field: descriptionField2 + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-picker-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Badge2, + { + className: "dataviews-view-picker-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-picker-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components15.Flex, + { + className: "dataviews-view-picker-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components15.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components15.FlexItem, + { + className: "dataviews-view-picker-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + }, + id + ); +} +function GridGroup({ + groupName, + groupField, + showLabel = true, + children +}) { + const headerId = (0, import_compose7.useInstanceId)( + GridGroup, + "dataviews-view-picker-grid-group__header" + ); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + role: "group", + "aria-labelledby": headerId, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + "h3", + { + className: "dataviews-view-picker-grid-group__header", + id: headerId, + children: showLabel ? (0, import_i18n17.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n17.__)("%1$s: %2$s"), + groupField.label, + groupName + ) : groupName + } + ), + children + ] + }, + groupName + ); +} +function ViewPickerGrid({ + actions, + data, + fields, + getItemId: getItemId3, + isLoading, + onChangeSelection, + selection, + view, + className, + empty +}) { + const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element19.useContext)(dataviews_context_default); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField2 = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const hasData = !!data?.length; + const usedPreviewSize = view.layout?.previewSize; + const isMultiselect = useIsMultiselectPicker(actions); + const size = "900px"; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const currentPage = view?.page ?? 1; + const perPage = view?.perPage ?? 0; + const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; + return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components15.Composite, + { + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + "aria-label": itemListLabel, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + Stack, + { + direction: "column", + gap: "lg", + children, + ...props + } + ), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + GridGroup, + { + groupName, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + GridItems, + { + previewSize: usedPreviewSize, + style: { + gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` + }, + "aria-busy": isLoading, + ref: resizeObserverRef, + children: groupItems.map((item) => { + const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId3, + item, + mediaField, + titleField, + descriptionField: descriptionField2, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset: posInSet, + setsize: setSize + }, + getItemId3(item) + ); + }) + } + ) + }, + groupName + ) + ) + } + ), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + import_components15.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + GridItems, + { + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + previewSize: usedPreviewSize, + "aria-busy": isLoading, + ref: resizeObserverRef + } + ), + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + "aria-label": itemListLabel, + children: data.map((item, index) => { + let posinset = isInfiniteScroll ? index + 1 : void 0; + if (!isInfiniteScroll) { + posinset = (currentPage - 1) * perPage + index + 1; + } + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId3, + item, + mediaField, + titleField, + descriptionField: descriptionField2, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset, + setsize: setSize + }, + getItemId3(item) + ); + }) + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components15.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_components15.Spinner, {}) }) + ] + }); +} +var picker_grid_default = ViewPickerGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs +var import_i18n18 = __toESM(require_i18n(), 1); +var import_components16 = __toESM(require_components(), 1); +var import_element20 = __toESM(require_element(), 1); +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +function TableColumnField2({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(field.render, { item, field }) }); +} +function TableRow2({ + item, + fields, + id, + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + onChangeSelection, + multiselect, + posinset +}) { + const { paginationInfo } = (0, import_element20.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element20.useState)(false); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const handleMouseEnter = () => { + setIsHovered(true); + }; + const handleMouseLeave = () => { + setIsHovered(false); + }; + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + import_components16.Composite.Item, + { + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, + children, + ...props + } + ), + "aria-selected": isSelected2, + "aria-setsize": paginationInfo.totalItems || void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : "option", + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "td", + { + className: "dataviews-view-table__checkbox-column", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId3, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ) }) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + column_primary_default, + { + item, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField2 : void 0, + isItemClickable: () => false + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + TableColumnField2, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }) + ] + }, + id + ); +} +function ViewPickerTable({ + actions, + data, + fields, + getItemId: getItemId3, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + view, + className, + empty +}) { + const headerMenuRefs = (0, import_element20.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element20.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element20.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element20.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element20.useId)(); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField2 = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + "table", + { + className: clsx_default( + "dataviews-view-table", + "dataviews-view-picker-table", + className, + { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + } + ), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : "listbox", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + "tr", + { + className: "dataviews-view-table__row", + role: "presentation", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId3 + } + ) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: view.layout?.enableMoving ?? true + } + ) + }, + column + ); + }) + ] + } + ) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + import_components16.Composite, + { + virtualFocus: true, + orientation: "vertical", + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("tbody", { role: "group" }), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "tr", + { + className: "dataviews-view-table__group-header-row", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, + className: "dataviews-view-table__group-header-cell", + role: "presentation", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n18.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n18.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) + } + ), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + TableRow2, + { + item, + fields, + id: getItemId3(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + onChangeSelection, + multiselect: isMultiselect + }, + getItemId3(item) + )) + ] + }, + `group-${groupName}` + ) + ) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components16.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("tbody", { role: "presentation" }), + virtualFocus: true, + orientation: "vertical", + children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + TableRow2, + { + item, + fields, + id: getItemId3(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField: descriptionField2, + selection, + getItemId: getItemId3, + onChangeSelection, + multiselect: isMultiselect, + posinset: index + 1 + }, + getItemId3(item) + )) + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components16.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components16.Spinner, {}) }) + ] + } + ) + ] }); +} +var picker_table_default = ViewPickerTable; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs +var import_components17 = __toESM(require_components(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); +var import_element21 = __toESM(require_element(), 1); +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +var imageSizes2 = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +function PreviewSizePicker() { + const context = (0, import_element21.useContext)(dataviews_context_default); + const view = context.view; + const breakValues = imageSizes2.filter((size) => { + return context.containerWidth >= size.breakpoint; + }); + const layoutPreviewSize = view.layout?.previewSize ?? 230; + const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; + const marks = breakValues.map((size, index) => { + return { + value: index + }; + }); + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + import_components17.RangeControl, + { + __next40pxDefaultSize: true, + showTooltip: false, + label: (0, import_i18n19.__)("Preview size"), + value: previewSizeToUse, + min: 0, + max: breakValues.length - 1, + withInputField: false, + onChange: (value = 0) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + previewSize: breakValues[value].value + } + }); + }, + step: 1, + marks + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs +var import_components18 = __toESM(require_components(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element22.useContext)(dataviews_context_default); + const view = context.view; + return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)( + import_components18.__experimentalToggleGroupControl, + { + size: "__unstable-large", + label: (0, import_i18n20.__)("Density"), + value: view.layout?.density || "balanced", + onChange: (value) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + density: value + } + }); + }, + isBlock: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "comfortable", + label: (0, import_i18n20._x)( + "Comfortable", + "Density option for DataView layout" + ) + }, + "comfortable" + ), + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "balanced", + label: (0, import_i18n20._x)("Balanced", "Density option for DataView layout") + }, + "balanced" + ), + /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "compact", + label: (0, import_i18n20._x)("Compact", "Density option for DataView layout") + }, + "compact" + ) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var VIEW_LAYOUTS = [ + { + type: LAYOUT_TABLE, + label: (0, import_i18n21.__)("Table"), + component: table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_GRID, + label: (0, import_i18n21.__)("Grid"), + component: grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker + }, + { + type: LAYOUT_LIST, + label: (0, import_i18n21.__)("List"), + component: ViewList, + icon: (0, import_i18n21.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_ACTIVITY, + label: (0, import_i18n21.__)("Activity"), + component: ViewActivity, + icon: scheduled_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_PICKER_GRID, + label: (0, import_i18n21.__)("Grid"), + component: picker_grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker, + isPicker: true + }, + { + type: LAYOUT_PICKER_TABLE, + label: (0, import_i18n21.__)("Table"), + component: picker_table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker, + isPicker: true + } +]; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_element30 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_components21 = __toESM(require_components(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); +var import_element27 = __toESM(require_element(), 1); + +// node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp2.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b2)) { + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js +var __defProp3 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __hasOwnProp3 = Object.prototype.hasOwnProperty; +var __propIsEnum2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues2 = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp3.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + if (__getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(b2)) { + if (__propIsEnum2.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps2 = (a2, b2) => __defProps2(a2, __getOwnPropDescs2(b2)); +var __objRest2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js +function noop(..._) { +} +function applyState(argument, currentValue) { + if (isUpdater(argument)) { + const value = isLazyValue(currentValue) ? currentValue() : currentValue; + return argument(value); + } + return argument; +} +function isUpdater(argument) { + return typeof argument === "function"; +} +function isLazyValue(value) { + return typeof value === "function"; +} +function hasOwnProperty(object, prop) { + if (typeof Object.hasOwn === "function") { + return Object.hasOwn(object, prop); + } + return Object.prototype.hasOwnProperty.call(object, prop); +} +function chain(...fns) { + return (...args) => { + for (const fn of fns) { + if (typeof fn === "function") { + fn(...args); + } + } + }; +} +function normalizeString(str) { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); +} +function omit2(object, keys) { + const result = __spreadValues2({}, object); + for (const key of keys) { + if (hasOwnProperty(result, key)) { + delete result[key]; + } + } + return result; +} +function pick(object, paths) { + const result = {}; + for (const key of paths) { + if (hasOwnProperty(object, key)) { + result[key] = object[key]; + } + } + return result; +} +function identity(value) { + return value; +} +function invariant(condition, message2) { + if (condition) return; + if (typeof message2 !== "string") throw new Error("Invariant failed"); + throw new Error(message2); +} +function getKeys(obj) { + return Object.keys(obj); +} +function isFalsyBooleanCallback(booleanOrCallback, ...args) { + const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; + if (result == null) return false; + return !result; +} +function disabledFromProps(props) { + return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; +} +function removeUndefinedValues(obj) { + const result = {}; + for (const key in obj) { + if (obj[key] !== void 0) { + result[key] = obj[key]; + } + } + return result; +} +function defaultValue(...values) { + for (const value of values) { + if (value !== void 0) return value; + } + return void 0; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js +var import_react4 = __toESM(require_react(), 1); +function setRef(ref, value) { + if (typeof ref === "function") { + ref(value); + } else if (ref) { + ref.current = value; + } +} +function isValidElementWithRef(element) { + if (!element) return false; + if (!(0, import_react4.isValidElement)(element)) return false; + if ("ref" in element.props) return true; + if ("ref" in element) return true; + return false; +} +function getRefProperty(element) { + if (!isValidElementWithRef(element)) return null; + const props = __spreadValues({}, element.props); + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = __spreadValues({}, base); + for (const key in overrides) { + if (!hasOwnProperty(overrides, key)) continue; + if (key === "className") { + const prop = "className"; + props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; + continue; + } + if (key === "style") { + const prop = "style"; + props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; + continue; + } + const overrideValue = overrides[key]; + if (typeof overrideValue === "function" && key.startsWith("on")) { + const baseValue = base[key]; + if (typeof baseValue === "function") { + props[key] = (...args) => { + overrideValue(...args); + baseValue(...args); + }; + continue; + } + } + props[key] = overrideValue; + } + return props; +} + +// node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js +var canUseDOM = checkIsBrowser(); +function checkIsBrowser() { + var _a; + return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); +} +function getDocument(node) { + if (!node) return document; + if ("self" in node) return node.document; + return node.ownerDocument || document; +} +function getActiveElement(node, activeDescendant = false) { + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && activeElement.contentDocument) { + return getActiveElement( + activeElement.contentDocument.body, + activeDescendant + ); + } + if (activeDescendant) { + const id = activeElement.getAttribute("aria-activedescendant"); + if (id) { + const element = getDocument(activeElement).getElementById(id); + if (element) { + return element; + } + } + } + return activeElement; +} +function contains(parent, child) { + return parent === child || parent.contains(child); +} +function isFrame(element) { + return element.tagName === "IFRAME"; +} +function isButton(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "button") return true; + if (tagName === "input" && element.type) { + return buttonInputTypes.indexOf(element.type) !== -1; + } + return false; +} +var buttonInputTypes = [ + "button", + "color", + "file", + "image", + "reset", + "submit" +]; +function isVisible(element) { + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + const htmlElement = element; + return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; +} +function isTextField(element) { + try { + const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; + const isTextArea = element.tagName === "TEXTAREA"; + return isTextInput || isTextArea || false; + } catch (error) { + return false; + } +} +function isTextbox(element) { + return element.isContentEditable || isTextField(element); +} +function getTextboxValue(element) { + if (isTextField(element)) { + return element.value; + } + if (element.isContentEditable) { + const range = getDocument(element).createRange(); + range.selectNodeContents(element); + return range.toString(); + } + return ""; +} +function getTextboxSelection(element) { + let start = 0; + let end = 0; + if (isTextField(element)) { + start = element.selectionStart || 0; + end = element.selectionEnd || 0; + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { + const range = selection.getRangeAt(0); + const nextRange = range.cloneRange(); + nextRange.selectNodeContents(element); + nextRange.setEnd(range.startContainer, range.startOffset); + start = nextRange.toString().length; + nextRange.setEnd(range.endContainer, range.endOffset); + end = nextRange.toString().length; + } + } + return { start, end }; +} +function getPopupRole(element, fallback) { + const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; + const role = element == null ? void 0 : element.getAttribute("role"); + if (role && allowedPopupRoles.indexOf(role) !== -1) { + return role; + } + return fallback; +} +function getScrollingElement(element) { + if (!element) return null; + const isScrollableOverflow = (overflow) => { + if (overflow === "auto") return true; + if (overflow === "scroll") return true; + return false; + }; + if (element.clientHeight && element.scrollHeight > element.clientHeight) { + const { overflowY } = getComputedStyle(element); + if (isScrollableOverflow(overflowY)) return element; + } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { + const { overflowX } = getComputedStyle(element); + if (isScrollableOverflow(overflowX)) return element; + } + return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; +} +function setSelectionRange(element, ...args) { + if (/text|search|password|tel|url/i.test(element.type)) { + element.setSelectionRange(...args); + } +} +function sortBasedOnDOMPosition(items, getElement) { + const pairs = items.map((item, index) => [index, item]); + let isOrderDifferent = false; + pairs.sort(([indexA, a2], [indexB, b2]) => { + const elementA = getElement(a2); + const elementB = getElement(b2); + if (elementA === elementB) return 0; + if (!elementA || !elementB) return 0; + if (isElementPreceding(elementA, elementB)) { + if (indexA > indexB) { + isOrderDifferent = true; + } + return -1; + } + if (indexA < indexB) { + isOrderDifferent = true; + } + return 1; + }); + if (isOrderDifferent) { + return pairs.map(([_, item]) => item); + } + return items; +} +function isElementPreceding(a2, b2) { + return Boolean( + b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING + ); +} + +// node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js +function isTouchDevice() { + return canUseDOM && !!navigator.maxTouchPoints; +} +function isApple() { + if (!canUseDOM) return false; + return /mac|iphone|ipad|ipod/i.test(navigator.platform); +} +function isSafari() { + return canUseDOM && isApple() && /apple/i.test(navigator.vendor); +} +function isFirefox() { + return canUseDOM && /firefox\//i.test(navigator.userAgent); +} + +// node_modules/@ariakit/core/esm/utils/events.js +function isPortalEvent(event) { + return Boolean( + event.currentTarget && !contains(event.currentTarget, event.target) + ); +} +function isSelfTarget(event) { + return event.target === event.currentTarget; +} +function isOpeningInNewTab(event) { + const element = event.currentTarget; + if (!element) return false; + const isAppleDevice = isApple(); + if (isAppleDevice && !event.metaKey) return false; + if (!isAppleDevice && !event.ctrlKey) return false; + const tagName = element.tagName.toLowerCase(); + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function isDownloading(event) { + const element = event.currentTarget; + if (!element) return false; + const tagName = element.tagName.toLowerCase(); + if (!event.altKey) return false; + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function fireBlurEvent(element, eventInit) { + const event = new FocusEvent("blur", eventInit); + const defaultAllowed = element.dispatchEvent(event); + const bubbleInit = __spreadProps2(__spreadValues2({}, eventInit), { bubbles: true }); + element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); + return defaultAllowed; +} +function fireKeyboardEvent(element, type, eventInit) { + const event = new KeyboardEvent(type, eventInit); + return element.dispatchEvent(event); +} +function fireClickEvent(element, eventInit) { + const event = new MouseEvent("click", eventInit); + return element.dispatchEvent(event); +} +function isFocusEventOutside(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function queueBeforeEvent(element, type, callback, timeout) { + const createTimer = (callback2) => { + if (timeout) { + const timerId2 = setTimeout(callback2, timeout); + return () => clearTimeout(timerId2); + } + const timerId = requestAnimationFrame(callback2); + return () => cancelAnimationFrame(timerId); + }; + const cancelTimer = createTimer(() => { + element.removeEventListener(type, callSync, true); + callback(); + }); + const callSync = () => { + cancelTimer(); + callback(); + }; + element.addEventListener(type, callSync, { once: true, capture: true }); + return cancelTimer; +} +function addGlobalEventListener(type, listener, options, scope = window) { + const children = []; + try { + scope.document.addEventListener(type, listener, options); + for (const frame of Array.from(scope.frames)) { + children.push(addGlobalEventListener(type, listener, options, frame)); + } + } catch (e2) { + } + const removeEventListener = () => { + try { + scope.document.removeEventListener(type, listener, options); + } catch (e2) { + } + for (const remove of children) { + remove(); + } + }; + return removeEventListener; +} + +// node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js +var import_react5 = __toESM(require_react(), 1); +var React6 = __toESM(require_react(), 1); +var _React = __spreadValues({}, React6); +var useReactId = _React.useId; +var useReactDeferredValue = _React.useDeferredValue; +var useReactInsertionEffect = _React.useInsertionEffect; +var useSafeLayoutEffect = canUseDOM ? import_react5.useLayoutEffect : import_react5.useEffect; +function useInitialValue(value) { + const [initialValue] = (0, import_react5.useState)(value); + return initialValue; +} +function useLiveRef(value) { + const ref = (0, import_react5.useRef)(value); + useSafeLayoutEffect(() => { + ref.current = value; + }); + return ref; +} +function useEvent(callback) { + const ref = (0, import_react5.useRef)(() => { + throw new Error("Cannot call an event handler while rendering."); + }); + if (useReactInsertionEffect) { + useReactInsertionEffect(() => { + ref.current = callback; + }); + } else { + ref.current = callback; + } + return (0, import_react5.useCallback)((...args) => { + var _a; + return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); + }, []); +} +function useTransactionState(callback) { + const [state, setState] = (0, import_react5.useState)(null); + useSafeLayoutEffect(() => { + if (state == null) return; + if (!callback) return; + let prevState = null; + callback((prev) => { + prevState = prev; + return state; + }); + return () => { + callback(prevState); + }; + }, [state, callback]); + return [state, setState]; +} +function useMergeRefs(...refs) { + return (0, import_react5.useMemo)(() => { + if (!refs.some(Boolean)) return; + return (value) => { + for (const ref of refs) { + setRef(ref, value); + } + }; + }, refs); +} +function useId3(defaultId) { + if (useReactId) { + const reactId = useReactId(); + if (defaultId) return defaultId; + return reactId; + } + const [id, setId] = (0, import_react5.useState)(defaultId); + useSafeLayoutEffect(() => { + if (defaultId || id) return; + const random = Math.random().toString(36).slice(2, 8); + setId(`id-${random}`); + }, [defaultId, id]); + return defaultId || id; +} +function useTagName(refOrElement, type) { + const stringOrUndefined = (type2) => { + if (typeof type2 !== "string") return; + return type2; + }; + const [tagName, setTagName] = (0, import_react5.useState)(() => stringOrUndefined(type)); + useSafeLayoutEffect(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); + }, [refOrElement, type]); + return tagName; +} +function useAttribute(refOrElement, attributeName, defaultValue2) { + const initialValue = useInitialValue(defaultValue2); + const [attribute, setAttribute] = (0, import_react5.useState)(initialValue); + (0, import_react5.useEffect)(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + if (!element) return; + const callback = () => { + const value = element.getAttribute(attributeName); + setAttribute(value == null ? initialValue : value); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { attributeFilter: [attributeName] }); + callback(); + return () => observer.disconnect(); + }, [refOrElement, attributeName, initialValue]); + return attribute; +} +function useUpdateEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + (0, import_react5.useEffect)(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + (0, import_react5.useEffect)( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useUpdateLayoutEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + useSafeLayoutEffect(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + useSafeLayoutEffect( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useForceUpdate() { + return (0, import_react5.useReducer)(() => [], []); +} +function useBooleanEvent(booleanOrCallback) { + return useEvent( + typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback + ); +} +function useWrapElement(props, callback, deps = []) { + const wrapElement = (0, import_react5.useCallback)( + (element) => { + if (props.wrapElement) { + element = props.wrapElement(element); + } + return callback(element); + }, + [...deps, props.wrapElement] + ); + return __spreadProps(__spreadValues({}, props), { wrapElement }); +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, __spreadProps(__spreadValues({}, parent), { [key]: value })); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + }, []); + const isMouseMoving = useEvent(() => mouseMoving); + return isMouseMoving; +} +var mouseMoving = false; +var previousScreenX = 0; +var previousScreenY = 0; +function hasMouseMovement(event) { + const movementX = event.movementX || event.screenX - previousScreenX; + const movementY = event.movementY || event.screenY - previousScreenY; + previousScreenX = event.screenX; + previousScreenY = event.screenY; + return movementX || movementY || false; +} +function setMouseMoving(event) { + if (!hasMouseMovement(event)) return; + mouseMoving = true; +} +function resetMouseMoving() { + mouseMoving = false; +} + +// node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef((props, ref) => render4(__spreadProps(__spreadValues({}, props), { ref }))); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const _a = props, { wrapElement, render: render4 } = _a, rest = __objRest(_a, ["wrapElement", "render"]); + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = __spreadProps(__spreadValues({}, render4.props), { ref: mergedRef }); + element = React7.cloneElement(render4, mergeProps2(rest, renderProps)); + } else if (render4) { + element = render4(rest); + } else { + element = /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Type, __spreadValues({}, rest)); + } + if (wrapElement) { + return wrapElement(element); + } + return element; +} +function createHook(useProps) { + const useRole = (props = {}) => { + return useProps(props); + }; + useRole.displayName = useProps.name; + return useRole; +} +function createStoreContext(providers = [], scopedProviders = []) { + const context = React7.createContext(void 0); + const scopedContext = React7.createContext(void 0); + const useContext28 = () => React7.useContext(context); + const useScopedContext = (onlyScoped = false) => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (onlyScoped) return scoped; + return scoped || store; + }; + const useProviderContext = () => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (scoped && scoped === store) return; + return store; + }; + const ContextProvider = (props) => { + return providers.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(context.Provider, __spreadValues({}, props)) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(scopedContext.Provider, __spreadValues({}, props)) + ) })); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js +var ctx = createStoreContext(); +var useCollectionContext = ctx.useContext; +var useCollectionScopedContext = ctx.useScopedContext; +var useCollectionProviderContext = ctx.useProviderContext; +var CollectionContextProvider = ctx.ContextProvider; +var CollectionScopedContextProvider = ctx.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js +var import_react6 = __toESM(require_react(), 1); +var ctx2 = createStoreContext( + [CollectionContextProvider], + [CollectionScopedContextProvider] +); +var useCompositeContext = ctx2.useContext; +var useCompositeScopedContext = ctx2.useScopedContext; +var useCompositeProviderContext = ctx2.useProviderContext; +var CompositeContextProvider = ctx2.ContextProvider; +var CompositeScopedContextProvider = ctx2.ScopedContextProvider; +var CompositeItemContext = (0, import_react6.createContext)( + void 0 +); +var CompositeRowContext = (0, import_react6.createContext)( + void 0 +); + +// node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js +var import_react7 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react7.createContext)(null); +var TagRemoveIdContext = (0, import_react7.createContext)( + null +); +var ctx3 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx3.useContext; +var useTagScopedContext = ctx3.useScopedContext; +var useTagProviderContext = ctx3.useProviderContext; +var TagContextProvider = ctx3.ContextProvider; +var TagScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js +function getInternal(store, key) { + const internals = store.__unstableInternals; + invariant(internals, "Invalid store"); + return internals[key]; +} +function createStore(initialState, ...stores) { + let state = initialState; + let prevStateBatch = state; + let lastUpdate = /* @__PURE__ */ Symbol(); + let destroy = noop; + const instances = /* @__PURE__ */ new Set(); + const updatedKeys = /* @__PURE__ */ new Set(); + const setups = /* @__PURE__ */ new Set(); + const listeners = /* @__PURE__ */ new Set(); + const batchListeners = /* @__PURE__ */ new Set(); + const disposables = /* @__PURE__ */ new WeakMap(); + const listenerKeys = /* @__PURE__ */ new WeakMap(); + const storeSetup = (callback) => { + setups.add(callback); + return () => setups.delete(callback); + }; + const storeInit = () => { + const initialized = instances.size; + const instance = /* @__PURE__ */ Symbol(); + instances.add(instance); + const maybeDestroy = () => { + instances.delete(instance); + if (instances.size) return; + destroy(); + }; + if (initialized) return maybeDestroy; + const desyncs = getKeys(state).map( + (key) => chain( + ...stores.map((store) => { + var _a; + const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); + if (!storeState) return; + if (!hasOwnProperty(storeState, key)) return; + return sync(store, [key], (state2) => { + setState( + key, + state2[key], + // @ts-expect-error - Not public API. This is just to prevent + // infinite loops. + true + ); + }); + }) + ) + ); + const teardowns = []; + for (const setup2 of setups) { + teardowns.push(setup2()); + } + const cleanups = stores.map(init); + destroy = chain(...desyncs, ...teardowns, ...cleanups); + return maybeDestroy; + }; + const sub = (keys, listener, set = listeners) => { + set.add(listener); + listenerKeys.set(listener, keys); + return () => { + var _a; + (_a = disposables.get(listener)) == null ? void 0 : _a(); + disposables.delete(listener); + listenerKeys.delete(listener); + set.delete(listener); + }; + }; + const storeSubscribe = (keys, listener) => sub(keys, listener); + const storeSync = (keys, listener) => { + disposables.set(listener, listener(state, state)); + return sub(keys, listener); + }; + const storeBatch = (keys, listener) => { + disposables.set(listener, listener(state, prevStateBatch)); + return sub(keys, listener, batchListeners); + }; + const storePick = (keys) => createStore(pick(state, keys), finalStore); + const storeOmit = (keys) => createStore(omit2(state, keys), finalStore); + const getState = () => state; + const setState = (key, value, fromStores = false) => { + var _a; + if (!hasOwnProperty(state, key)) return; + const nextValue = applyState(value, state[key]); + if (nextValue === state[key]) return; + if (!fromStores) { + for (const store of stores) { + (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); + } + } + const prevState = state; + state = __spreadProps2(__spreadValues2({}, state), { [key]: nextValue }); + const thisUpdate = /* @__PURE__ */ Symbol(); + lastUpdate = thisUpdate; + updatedKeys.add(key); + const run = (listener, prev, uKeys) => { + var _a2; + const keys = listenerKeys.get(listener); + const updated = (k) => uKeys ? uKeys.has(k) : k === key; + if (!keys || keys.some(updated)) { + (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); + disposables.set(listener, listener(state, prev)); + } + }; + for (const listener of listeners) { + run(listener, prevState); + } + queueMicrotask(() => { + if (lastUpdate !== thisUpdate) return; + const snapshot = state; + for (const listener of batchListeners) { + run(listener, prevStateBatch, updatedKeys); + } + prevStateBatch = snapshot; + updatedKeys.clear(); + }); + }; + const finalStore = { + getState, + setState, + __unstableInternals: { + setup: storeSetup, + init: storeInit, + subscribe: storeSubscribe, + sync: storeSync, + batch: storeBatch, + pick: storePick, + omit: storeOmit + } + }; + return finalStore; +} +function setup(store, ...args) { + if (!store) return; + return getInternal(store, "setup")(...args); +} +function init(store, ...args) { + if (!store) return; + return getInternal(store, "init")(...args); +} +function subscribe(store, ...args) { + if (!store) return; + return getInternal(store, "subscribe")(...args); +} +function sync(store, ...args) { + if (!store) return; + return getInternal(store, "sync")(...args); +} +function batch(store, ...args) { + if (!store) return; + return getInternal(store, "batch")(...args); +} +function omit22(store, ...args) { + if (!store) return; + return getInternal(store, "omit")(...args); +} +function pick2(store, ...args) { + if (!store) return; + return getInternal(store, "pick")(...args); +} +function mergeStore(...stores) { + const initialState = stores.reduce((state, store2) => { + var _a; + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (!nextState) return state; + return Object.assign(state, nextState); + }, {}); + const store = createStore(initialState, ...stores); + return Object.assign({}, ...stores, store); +} +function throwOnConflictingProps(props, store) { + if (false) return; + if (!store) return; + const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { + var _a; + const stateKey = key.replace("default", ""); + return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; + }); + if (!defaultKeys.length) return; + const storeState = store.getState(); + const conflictingProps = defaultKeys.filter( + (key) => hasOwnProperty(storeState, key) + ); + if (!conflictingProps.length) return; + throw new Error( + `Passing a store prop in conjunction with a default state is not supported. + +const store = useSelectStore(); + + ^ ^ + +Instead, pass the default state to the topmost store: + +const store = useSelectStore({ defaultValue: "Apple" }); + + +See https://github.com/ariakit/ariakit/pull/2745 for more details. + +If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit +` + ); +} + +// node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js +var React8 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var { useSyncExternalStore } = import_shim.default; +var noopSubscribe = () => () => { +}; +function useStoreState(store, keyOrSelector = identity) { + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const key = typeof keyOrSelector === "string" ? keyOrSelector : null; + const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; + const state = store == null ? void 0 : store.getState(); + if (selector2) return selector2(state); + if (!state) return; + if (!key) return; + if (!hasOwnProperty(state, key)) return; + return state[key]; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreStateObject(store, object) { + const objRef = React8.useRef( + {} + ); + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const state = store == null ? void 0 : store.getState(); + let updated = false; + const obj = objRef.current; + for (const prop in object) { + const keyOrSelector = object[prop]; + if (typeof keyOrSelector === "function") { + const value = keyOrSelector(state); + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + if (typeof keyOrSelector === "string") { + if (!state) continue; + if (!hasOwnProperty(state, keyOrSelector)) continue; + const value = state[keyOrSelector]; + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + } + if (updated) { + objRef.current = __spreadValues({}, obj); + } + return objRef.current; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreProps(store, props, key, setKey) { + const value = hasOwnProperty(props, key) ? props[key] : void 0; + const setValue = setKey ? props[setKey] : void 0; + const propsRef = useLiveRef({ value, setValue }); + useSafeLayoutEffect(() => { + return sync(store, [key], (state, prev) => { + const { value: value2, setValue: setValue2 } = propsRef.current; + if (!setValue2) return; + if (state[key] === prev[key]) return; + if (state[key] === value2) return; + setValue2(state[key]); + }); + }, [store, key]); + useSafeLayoutEffect(() => { + if (value === void 0) return; + store.setState(key, value); + return batch(store, [key], () => { + if (value === void 0) return; + store.setState(key, value); + }); + }); +} +function useStore(createStore2, props) { + const [store, setStore] = React8.useState(() => createStore2(props)); + useSafeLayoutEffect(() => init(store), [store]); + const useState27 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => __spreadProps(__spreadValues({}, store), { useState: useState27 }), + [store, useState27] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2(__spreadValues(__spreadValues({}, props), store2.getState()))); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js +function getCommonParent(items) { + var _a; + const firstItem = items.find((item) => !!item.element); + const lastItem = [...items].reverse().find((item) => !!item.element); + let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; + while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { + const parent = parentElement; + if (lastItem && parent.contains(lastItem.element)) { + return parentElement; + } + parentElement = parentElement.parentElement; + } + return getDocument(parentElement).body; +} +function getPrivateStore(store) { + return store == null ? void 0 : store.__unstablePrivateStore; +} +function createCollectionStore(props = {}) { + var _a; + throwOnConflictingProps(props, props.store); + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const items = defaultValue( + props.items, + syncState == null ? void 0 : syncState.items, + props.defaultItems, + [] + ); + const itemsMap = new Map(items.map((item) => [item.id, item])); + const initialState = { + items, + renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) + }; + const syncPrivateStore = getPrivateStore(props.store); + const privateStore = createStore( + { items, renderedItems: initialState.renderedItems }, + syncPrivateStore + ); + const collection = createStore(initialState, props.store); + const sortItems = (renderedItems) => { + const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); + privateStore.setState("renderedItems", sortedItems); + collection.setState("renderedItems", sortedItems); + }; + setup(collection, () => init(privateStore)); + setup(privateStore, () => { + return batch(privateStore, ["items"], (state) => { + collection.setState("items", state.items); + }); + }); + setup(privateStore, () => { + return batch(privateStore, ["renderedItems"], (state) => { + let firstRun = true; + let raf = requestAnimationFrame(() => { + const { renderedItems } = collection.getState(); + if (state.renderedItems === renderedItems) return; + sortItems(state.renderedItems); + }); + if (typeof IntersectionObserver !== "function") { + return () => cancelAnimationFrame(raf); + } + const ioCallback = () => { + if (firstRun) { + firstRun = false; + return; + } + cancelAnimationFrame(raf); + raf = requestAnimationFrame(() => sortItems(state.renderedItems)); + }; + const root = getCommonParent(state.renderedItems); + const observer = new IntersectionObserver(ioCallback, { root }); + for (const item of state.renderedItems) { + if (!item.element) continue; + observer.observe(item.element); + } + return () => { + cancelAnimationFrame(raf); + observer.disconnect(); + }; + }); + }); + const mergeItem = (item, setItems, canDeleteFromMap = false) => { + let prevItem; + setItems((items2) => { + const index = items2.findIndex(({ id }) => id === item.id); + const nextItems = items2.slice(); + if (index !== -1) { + prevItem = items2[index]; + const nextItem = __spreadValues2(__spreadValues2({}, prevItem), item); + nextItems[index] = nextItem; + itemsMap.set(item.id, nextItem); + } else { + nextItems.push(item); + itemsMap.set(item.id, item); + } + return nextItems; + }); + const unmergeItem = () => { + setItems((items2) => { + if (!prevItem) { + if (canDeleteFromMap) { + itemsMap.delete(item.id); + } + return items2.filter(({ id }) => id !== item.id); + } + const index = items2.findIndex(({ id }) => id === item.id); + if (index === -1) return items2; + const nextItems = items2.slice(); + nextItems[index] = prevItem; + itemsMap.set(item.id, prevItem); + return nextItems; + }); + }; + return unmergeItem; + }; + const registerItem = (item) => mergeItem( + item, + (getItems) => privateStore.setState("items", getItems), + true + ); + return __spreadProps2(__spreadValues2({}, collection), { + registerItem, + renderItem: (item) => chain( + registerItem(item), + mergeItem( + item, + (getItems) => privateStore.setState("renderedItems", getItems) + ) + ), + item: (id) => { + if (!id) return null; + let item = itemsMap.get(id); + if (!item) { + const { items: items2 } = privateStore.getState(); + item = items2.find((item2) => item2.id === id); + if (item) { + itemsMap.set(id, item); + } + } + return item || null; + }, + // @ts-expect-error Internal + __unstablePrivateStore: privateStore + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js +function toArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return typeof arg !== "undefined" ? [arg] : []; +} +function flatten2DArray(array) { + const flattened = []; + for (const row of array) { + flattened.push(...row); + } + return flattened; +} +function reverseArray(array) { + return array.slice().reverse(); +} + +// node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItems(items, excludeId) { + return items.filter((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getItemsInRow(items, rowId) { + return items.filter((item) => item.rowId === rowId); +} +function flipItems(items, activeId, shouldInsertNullItem = false) { + const index = items.findIndex((item) => item.id === activeId); + return [ + ...items.slice(index + 1), + ...shouldInsertNullItem ? [NULL_ITEM] : [], + ...items.slice(0, index) + ]; +} +function groupItemsByRows(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function getMaxRowLength(array) { + let maxLength = 0; + for (const { length } of array) { + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} +function createEmptyItem(rowId) { + return { + id: "__EMPTY_ITEM__", + disabled: true, + rowId + }; +} +function normalizeRows(rows, activeId, focusShift) { + const maxLength = getMaxRowLength(rows); + for (const row of rows) { + for (let i2 = 0; i2 < maxLength; i2 += 1) { + const item = row[i2]; + if (!item || focusShift && item.disabled) { + const isFirst = i2 === 0; + const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i2 - 1]; + row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); + } + } + } + return rows; +} +function verticalizeItems(items) { + const rows = groupItemsByRows(items); + const maxLength = getMaxRowLength(rows); + const verticalized = []; + for (let i2 = 0; i2 < maxLength; i2 += 1) { + for (const row of rows) { + const item = row[i2]; + if (item) { + verticalized.push(__spreadProps2(__spreadValues2({}, item), { + // If there's no rowId, it means that it's not a grid composite, but + // a single row instead. So, instead of verticalizing it, that is, + // assigning a different rowId based on the column index, we keep it + // undefined so they will be part of the same row. This is useful + // when using up/down on one-dimensional composites. + rowId: item.rowId ? `${i2}` : void 0 + })); + } + } + } + return verticalized; +} +function createCompositeStore(props = {}) { + var _a; + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const collection = createCollectionStore(props); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId + ); + const initialState = __spreadProps2(__spreadValues2({}, collection.getState()), { + id: defaultValue( + props.id, + syncState == null ? void 0 : syncState.id, + `id-${Math.random().toString(36).slice(2, 8)}` + ), + activeId, + baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + activeId === null + ), + moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "both" + ), + rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + false + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), + focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) + }); + const composite = createStore(initialState, collection, props.store); + setup( + composite, + () => sync(composite, ["renderedItems", "activeId"], (state) => { + composite.setState("activeId", (activeId2) => { + var _a2; + if (activeId2 !== void 0) return activeId2; + return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; + }); + }) + ); + const getNextId = (direction = "next", options = {}) => { + var _a2, _b; + const defaultState = composite.getState(); + const { + skip = 0, + activeId: activeId2 = defaultState.activeId, + focusShift = defaultState.focusShift, + focusLoop = defaultState.focusLoop, + focusWrap = defaultState.focusWrap, + includesBaseElement = defaultState.includesBaseElement, + renderedItems = defaultState.renderedItems, + rtl = defaultState.rtl + } = options; + const isVerticalDirection = direction === "up" || direction === "down"; + const isNextDirection = direction === "next" || direction === "down"; + const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; + const canShift = focusShift && !skip; + let items = !isVerticalDirection ? renderedItems : flatten2DArray( + normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id; + } + const isGrid2 = items.some((item) => item.rowId); + const activeIndex = items.indexOf(activeItem); + const nextItems = items.slice(activeIndex + 1); + const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); + if (skip) { + const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); + const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. + nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; + return nextItem2 == null ? void 0 : nextItem2.id; + } + const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); + const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); + const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; + if (canLoop) { + const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); + const sortedItems = flipItems(loopItems, activeId2, hasNullItem); + const nextItem2 = findFirstEnabledItem(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem( + // We can use nextItems, which contains all the next items, including + // items from other rows, to wrap between rows. However, if there is a + // null item (the composite container), we'll only use the next items in + // the row. So moving next from the last item will focus on the + // composite container. On grid composites, horizontal navigation never + // focuses on the composite container, only vertical. + hasNullItem ? nextItemsInRow : nextItems, + activeId2 + ); + const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; + return nextId; + } + const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return __spreadProps2(__spreadValues2(__spreadValues2({}, collection), composite), { + setBaseElement: (element) => composite.setState("baseElement", element), + setActiveId: (id) => composite.setState("activeId", id), + move: (id) => { + if (id === void 0) return; + composite.setState("activeId", id); + composite.setState("moves", (moves) => moves + 1); + }, + first: () => { + var _a2; + return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; + }, + next: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("next", options); + }, + previous: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("previous", options); + }, + down: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("down", options); + }, + up: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("up", options); + } + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return __spreadValues({ id }, props); +} +function useCompositeStoreProps(store, update2, props) { + store = useCollectionStoreProps(store, update2, props); + useStoreProps(store, props, "activeId", "setActiveId"); + useStoreProps(store, props, "includesBaseElement"); + useStoreProps(store, props, "virtualFocus"); + useStoreProps(store, props, "orientation"); + useStoreProps(store, props, "rtl"); + useStoreProps(store, props, "focusLoop"); + useStoreProps(store, props, "focusWrap"); + useStoreProps(store, props, "focusShift"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js +function createDisclosureStore(props = {}) { + const store = mergeStore( + props.store, + omit22(props.disclosure, ["contentElement", "disclosureElement"]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const open = defaultValue( + props.open, + syncState == null ? void 0 : syncState.open, + props.defaultOpen, + false + ); + const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); + const initialState = { + open, + animated, + animating: !!animated && open, + mounted: open, + contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), + disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) + }; + const disclosure = createStore(initialState, store); + setup( + disclosure, + () => sync(disclosure, ["animated", "animating"], (state) => { + if (state.animated) return; + disclosure.setState("animating", false); + }) + ); + setup( + disclosure, + () => subscribe(disclosure, ["open"], () => { + if (!disclosure.getState().animated) return; + disclosure.setState("animating", true); + }) + ); + setup( + disclosure, + () => sync(disclosure, ["open", "animating"], (state) => { + disclosure.setState("mounted", state.open || state.animating); + }) + ); + return __spreadProps2(__spreadValues2({}, disclosure), { + disclosure: props.disclosure, + setOpen: (value) => disclosure.setState("open", value), + show: () => disclosure.setState("open", true), + hide: () => disclosure.setState("open", false), + toggle: () => disclosure.setState("open", (open2) => !open2), + stopAnimation: () => disclosure.setState("animating", false), + setContentElement: (value) => disclosure.setState("contentElement", value), + setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js +function useDisclosureStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store, props.disclosure]); + useStoreProps(store, props, "open", "setOpen"); + useStoreProps(store, props, "mounted", "setMounted"); + useStoreProps(store, props, "animated"); + return Object.assign(store, { disclosure: props.disclosure }); +} + +// node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js +function createPopoverStore(_a = {}) { + var _b = _a, { + popover: otherPopover + } = _b, props = __objRest2(_b, [ + "popover" + ]); + const store = mergeStore( + props.store, + omit22(otherPopover, [ + "arrowElement", + "anchorElement", + "contentElement", + "popoverElement", + "disclosureElement" + ]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const dialog = createDialogStore(__spreadProps2(__spreadValues2({}, props), { store })); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = __spreadProps2(__spreadValues2({}, dialog.getState()), { + placement, + currentPlacement: placement, + anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), + popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), + arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), + rendered: /* @__PURE__ */ Symbol("rendered") + }); + const popover = createStore(initialState, dialog, store); + return __spreadProps2(__spreadValues2(__spreadValues2({}, dialog), popover), { + setAnchorElement: (element) => popover.setState("anchorElement", element), + setPopoverElement: (element) => popover.setState("popoverElement", element), + setArrowElement: (element) => popover.setState("arrowElement", element), + render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore(_a = {}) { + var _b = _a, { + tag + } = _b, props = __objRest2(_b, [ + "tag" + ]); + const store = mergeStore(props.store, pick2(tag, ["value", "rtl"])); + throwOnConflictingProps(props, store); + const tagState = tag == null ? void 0 : tag.getState(); + const syncState = store == null ? void 0 : store.getState(); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId, + null + ); + const composite = createCompositeStore(__spreadProps2(__spreadValues2({}, props), { + activeId, + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + true + ), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "vertical" + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + true + ) + })); + const popover = createPopoverStore(__spreadProps2(__spreadValues2({}, props), { + placement: defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom-start" + ) + })); + const value = defaultValue( + props.value, + syncState == null ? void 0 : syncState.value, + props.defaultValue, + "" + ); + const selectedValue = defaultValue( + props.selectedValue, + syncState == null ? void 0 : syncState.selectedValue, + tagState == null ? void 0 : tagState.values, + props.defaultSelectedValue, + "" + ); + const multiSelectable = Array.isArray(selectedValue); + const initialState = __spreadProps2(__spreadValues2(__spreadValues2({}, composite.getState()), popover.getState()), { + value, + selectedValue, + resetValueOnSelect: defaultValue( + props.resetValueOnSelect, + syncState == null ? void 0 : syncState.resetValueOnSelect, + multiSelectable + ), + resetValueOnHide: defaultValue( + props.resetValueOnHide, + syncState == null ? void 0 : syncState.resetValueOnHide, + multiSelectable && !tag + ), + activeValue: syncState == null ? void 0 : syncState.activeValue + }); + const combobox = createStore(initialState, composite, popover, store); + if (isTouchSafari) { + setup( + combobox, + () => sync(combobox, ["virtualFocus"], () => { + combobox.setState("virtualFocus", false); + }) + ); + } + setup(combobox, () => { + if (!tag) return; + return chain( + sync(combobox, ["selectedValue"], (state) => { + if (!Array.isArray(state.selectedValue)) return; + tag.setValues(state.selectedValue); + }), + sync(tag, ["values"], (state) => { + combobox.setState("selectedValue", state.values); + }) + ); + }); + setup( + combobox, + () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { + if (!state.resetValueOnHide) return; + if (state.mounted) return; + combobox.setState("value", value); + }) + ); + setup( + combobox, + () => sync(combobox, ["open"], (state) => { + if (state.open) return; + combobox.setState("activeId", activeId); + combobox.setState("moves", 0); + }) + ); + setup( + combobox, + () => sync(combobox, ["moves", "activeId"], (state, prevState) => { + if (state.moves === prevState.moves) { + combobox.setState("activeValue", void 0); + } + }) + ); + setup( + combobox, + () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { + if (state.moves === prev.moves) return; + const { activeId: activeId2 } = combobox.getState(); + const activeItem = composite.item(activeId2); + combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); + }) + ); + return __spreadProps2(__spreadValues2(__spreadValues2(__spreadValues2({}, popover), composite), combobox), { + tag, + setValue: (value2) => combobox.setState("value", value2), + resetValue: () => combobox.setState("value", initialState.value), + setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = __spreadProps(__spreadValues({}, props), { + tag: props.tag !== void 0 ? props.tag : tag + }); + return useCompositeStoreOptions(props); +} +function useComboboxStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.tag]); + useStoreProps(store, props, "value", "setValue"); + useStoreProps(store, props, "selectedValue", "setSelectedValue"); + useStoreProps(store, props, "resetValueOnHide"); + useStoreProps(store, props, "resetValueOnSelect"); + return Object.assign( + useCompositeStoreProps( + usePopoverStoreProps(store, update2, props), + update2, + props + ), + { tag: props.tag } + ); +} +function useComboboxStore(props = {}) { + props = useComboboxStoreOptions(props); + const [store, update2] = useStore(createComboboxStore, props); + return useComboboxStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js +var ctx4 = createStoreContext(); +var useDisclosureContext = ctx4.useContext; +var useDisclosureScopedContext = ctx4.useScopedContext; +var useDisclosureProviderContext = ctx4.useProviderContext; +var DisclosureContextProvider = ctx4.ContextProvider; +var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js +var import_react8 = __toESM(require_react(), 1); +var ctx5 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx5.useContext; +var useDialogScopedContext = ctx5.useScopedContext; +var useDialogProviderContext = ctx5.useProviderContext; +var DialogContextProvider = ctx5.ContextProvider; +var DialogScopedContextProvider = ctx5.ScopedContextProvider; +var DialogHeadingContext = (0, import_react8.createContext)(void 0); +var DialogDescriptionContext = (0, import_react8.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js +var ctx6 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx6.useContext; +var usePopoverScopedContext = ctx6.useScopedContext; +var usePopoverProviderContext = ctx6.useProviderContext; +var PopoverContextProvider = ctx6.ContextProvider; +var PopoverScopedContextProvider = ctx6.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js +var import_react9 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react9.createContext)( + void 0 +); +var ctx7 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx7.useContext; +var useComboboxScopedContext = ctx7.useScopedContext; +var useComboboxProviderContext = ctx7.useProviderContext; +var ComboboxContextProvider = ctx7.ContextProvider; +var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react9.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react9.createContext)(false); + +// node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js +var TagName = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = usePopoverProviderContext(); + store = store || context; + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) + }); + return props; + } +); +var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { + const htmlProps = usePopoverAnchor(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js +function findFirstEnabledItem2(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItem(store, id) { + if (!id) return null; + return store.item(id) || null; +} +function groupItemsByRows2(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function selectTextField(element, collapseToEnd = false) { + if (isTextField(element)) { + element.setSelectionRange( + collapseToEnd ? element.value.length : 0, + element.value.length + ); + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + selection == null ? void 0 : selection.selectAllChildren(element); + if (collapseToEnd) { + selection == null ? void 0 : selection.collapseToEnd(); + } + } +} +var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); +function focusSilently(element) { + element[FOCUS_SILENTLY] = true; + element.focus({ preventScroll: true }); +} +function silentlyFocused(element) { + const isSilentlyFocused = element[FOCUS_SILENTLY]; + delete element[FOCUS_SILENTLY]; + return isSilentlyFocused; +} +function isItem(store, element, exclude) { + if (!element) return false; + if (element === exclude) return false; + const item = store.item(element.id); + if (!item) return false; + if (exclude && item.element === exclude) return false; + return true; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react10 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react10.createContext)(true); + +// node_modules/@ariakit/core/esm/utils/focus.js +var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; +function isFocusable(element) { + if (!element.matches(selector)) return false; + if (!isVisible(element)) return false; + if (element.closest("[inert]")) return false; + return true; +} +function getClosestFocusable(element) { + while (element && !isFocusable(element)) { + element = element.closest(selector); + } + return element || null; +} +function hasFocus(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (activeElement === element) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + return activeDescendant === element.id; +} +function hasFocusWithin(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (contains(element, activeElement)) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + if (!("id" in element)) return false; + if (activeDescendant === element.id) return true; + return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); +} +function focusIfNeeded(element) { + if (!hasFocusWithin(element) && isFocusable(element)) { + element.focus(); + } +} +function focusIntoView(element, options) { + if (!("scrollIntoView" in element)) { + element.focus(); + } else { + element.focus({ preventScroll: true }); + element.scrollIntoView(__spreadValues2({ block: "nearest", inline: "nearest" }, options)); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js +var import_react11 = __toESM(require_react(), 1); +var TagName2 = "div"; +var isSafariBrowser = isSafari(); +var alwaysFocusVisibleInputTypes = [ + "text", + "search", + "url", + "tel", + "email", + "password", + "number", + "date", + "month", + "week", + "time", + "datetime", + "datetime-local" +]; +var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); +function markSafariFocusAncestor(element, value) { + if (!element) return; + element[safariFocusAncestorSymbol] = value; +} +function isAlwaysFocusVisible(element) { + const { tagName, readOnly, type } = element; + if (tagName === "TEXTAREA" && !readOnly) return true; + if (tagName === "SELECT" && !readOnly) return true; + if (tagName === "INPUT" && !readOnly) { + return alwaysFocusVisibleInputTypes.includes(type); + } + if (element.isContentEditable) return true; + const role = element.getAttribute("role"); + if (role === "combobox" && element.dataset.name) { + return true; + } + return false; +} +function getLabels(element) { + if ("labels" in element) { + return element.labels; + } + return null; +} +function isNativeCheckboxOrRadio(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "input" && element.type) { + return element.type === "radio" || element.type === "checkbox"; + } + return false; +} +function isNativeTabbable(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; +} +function supportsDisabledAttribute(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; +} +function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { + if (!focusable) { + return tabIndexProp; + } + if (trulyDisabled) { + if (nativeTabbable && !supportsDisabled) { + return -1; + } + return; + } + if (nativeTabbable) { + return tabIndexProp; + } + return tabIndexProp || 0; +} +function useDisableEvent(onEvent, disabled) { + return useEvent((event) => { + onEvent == null ? void 0 : onEvent(event); + if (event.defaultPrevented) return; + if (disabled) { + event.stopPropagation(); + event.preventDefault(); + } + }); +} +var isKeyboardModality = true; +function onGlobalMouseDown(event) { + const target = event.target; + if (target && "hasAttribute" in target) { + if (!target.hasAttribute("data-focus-visible")) { + isKeyboardModality = false; + } + } +} +function onGlobalKeyDown(event) { + if (event.metaKey) return; + if (event.ctrlKey) return; + if (event.altKey) return; + isKeyboardModality = true; +} +var useFocusable = createHook( + function useFocusable2(_a) { + var _b = _a, { + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible + } = _b, props = __objRest(_b, [ + "focusable", + "accessibleWhenDisabled", + "autoFocus", + "onFocusVisible" + ]); + const ref = (0, import_react11.useRef)(null); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + }, [focusable]); + if (isSafariBrowser) { + (0, import_react11.useEffect)(() => { + if (!focusable) return; + const element = ref.current; + if (!element) return; + if (!isNativeCheckboxOrRadio(element)) return; + const labels = getLabels(element); + if (!labels) return; + const onMouseUp = () => queueMicrotask(() => element.focus()); + for (const label of labels) { + label.addEventListener("mouseup", onMouseUp); + } + return () => { + for (const label of labels) { + label.removeEventListener("mouseup", onMouseUp); + } + }; + }, [focusable]); + } + const disabled = focusable && disabledFromProps(props); + const trulyDisabled = !!disabled && !accessibleWhenDisabled; + const [focusVisible, setFocusVisible] = (0, import_react11.useState)(false); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (!focusVisible) return; + const element = ref.current; + if (!element) return; + if (typeof IntersectionObserver === "undefined") return; + const observer = new IntersectionObserver(() => { + if (!isFocusable(element)) { + setFocusVisible(false); + } + }); + observer.observe(element); + return () => observer.disconnect(); + }, [focusable, focusVisible]); + const onKeyPressCapture = useDisableEvent( + props.onKeyPressCapture, + disabled + ); + const onMouseDownCapture = useDisableEvent( + props.onMouseDownCapture, + disabled + ); + const onClickCapture = useDisableEvent(props.onClickCapture, disabled); + const onMouseDownProp = props.onMouseDown; + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + const element = event.currentTarget; + if (!isSafariBrowser) return; + if (isPortalEvent(event)) return; + if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; + let receivedFocus = false; + const onFocus = () => { + receivedFocus = true; + }; + const options = { capture: true, once: true }; + element.addEventListener("focusin", onFocus, options); + const focusableContainer = getClosestFocusable(element.parentElement); + markSafariFocusAncestor(focusableContainer, true); + queueBeforeEvent(element, "mouseup", () => { + element.removeEventListener("focusin", onFocus, true); + markSafariFocusAncestor(focusableContainer, false); + if (receivedFocus) return; + focusIfNeeded(element); + }); + }); + const handleFocusVisible = (event, currentTarget) => { + if (currentTarget) { + event.currentTarget = currentTarget; + } + if (!focusable) return; + const element = event.currentTarget; + if (!element) return; + if (!hasFocus(element)) return; + onFocusVisible == null ? void 0 : onFocusVisible(event); + if (event.defaultPrevented) return; + element.dataset.focusVisible = "true"; + setFocusVisible(true); + }; + const onKeyDownCaptureProp = props.onKeyDownCapture; + const onKeyDownCapture = useEvent((event) => { + onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (focusVisible) return; + if (event.metaKey) return; + if (event.altKey) return; + if (event.ctrlKey) return; + if (!isSelfTarget(event)) return; + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + queueBeforeEvent(element, "focusout", applyFocusVisible); + }); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (!isSelfTarget(event)) { + setFocusVisible(false); + return; + } + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { + queueBeforeEvent(event.target, "focusout", applyFocusVisible); + } else { + setFocusVisible(false); + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + onBlurProp == null ? void 0 : onBlurProp(event); + if (!focusable) return; + if (!isFocusEventOutside(event)) return; + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react11.useContext)(FocusableContext); + const autoFocusRef = useEvent((element) => { + if (!focusable) return; + if (!autoFocus) return; + if (!element) return; + if (!autoFocusOnShow) return; + queueMicrotask(() => { + if (hasFocus(element)) return; + if (!isFocusable(element)) return; + element.focus(); + }); + }); + const tagName = useTagName(ref); + const nativeTabbable = focusable && isNativeTabbable(tagName); + const supportsDisabled = focusable && supportsDisabledAttribute(tagName); + const styleProp = props.style; + const style = (0, import_react11.useMemo)(() => { + if (trulyDisabled) { + return __spreadValues({ pointerEvents: "none" }, styleProp); + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = __spreadProps(__spreadValues({ + "data-focus-visible": focusable && focusVisible || void 0, + "data-autofocus": autoFocus || void 0, + "aria-disabled": disabled || void 0 + }, props), { + ref: useMergeRefs(ref, autoFocusRef, props.ref), + style, + tabIndex: getTabIndex( + focusable, + trulyDisabled, + nativeTabbable, + supportsDisabled, + props.tabIndex + ), + disabled: supportsDisabled && trulyDisabled ? true : void 0, + // TODO: Test Focusable contentEditable. + contentEditable: disabled ? void 0 : props.contentEditable, + onKeyPressCapture, + onClickCapture, + onMouseDownCapture, + onMouseDown, + onKeyDownCapture, + onFocusCapture, + onBlur + }); + return removeUndefinedValues(props); + } +); +var Focusable = forwardRef22(function Focusable2(props) { + const htmlProps = useFocusable(props); + return createElement3(TagName2, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +var TagName3 = "div"; +function isGrid(items) { + return items.some((item) => !!item.rowId); +} +function isPrintableKey(event) { + const target = event.target; + if (target && !isTextField(target)) return false; + return event.key.length === 1 && !event.ctrlKey && !event.metaKey; +} +function isModifierKey(event) { + return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; +} +function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { + return useEvent((event) => { + var _a; + onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); + if (event.defaultPrevented) return; + if (event.isPropagationStopped()) return; + if (!isSelfTarget(event)) return; + if (isModifierKey(event)) return; + if (isPrintableKey(event)) return; + const state = store.getState(); + const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; + if (!activeElement) return; + const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); + const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; + if (activeElement !== previousElement) { + activeElement.focus(); + } + if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { + event.preventDefault(); + } + if (event.currentTarget.contains(activeElement)) { + event.stopPropagation(); + } + }); +} +function findFirstEnabledItemInTheLastRow(items) { + return findFirstEnabledItem2( + flatten2DArray(reverseArray(groupItemsByRows2(items))) + ); +} +function useScheduleFocus(store) { + const [scheduled, setScheduled] = (0, import_react12.useState)(false); + const schedule = (0, import_react12.useCallback)(() => setScheduled(true), []); + const activeItem = store.useState( + (state) => getEnabledItem(store, state.activeId) + ); + (0, import_react12.useEffect)(() => { + const activeElement = activeItem == null ? void 0 : activeItem.element; + if (!scheduled) return; + if (!activeElement) return; + setScheduled(false); + activeElement.focus({ preventScroll: true }); + }, [activeItem, scheduled]); + return schedule; +} +var useComposite = createHook( + function useComposite2(_a) { + var _b = _a, { + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true + } = _b, props = __objRest(_b, [ + "store", + "composite", + "focusOnMove", + "moveOnKeyPress" + ]); + const context = useCompositeProviderContext(); + store = store || context; + invariant( + store, + "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." + ); + const ref = (0, import_react12.useRef)(null); + const previousElementRef = (0, import_react12.useRef)(null); + const scheduleFocus = useScheduleFocus(store); + const moves = store.useState("moves"); + const [, setBaseElement] = useTransactionState( + composite ? store.setBaseElement : null + ); + (0, import_react12.useEffect)(() => { + var _a2; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + if (!itemElement) return; + focusIntoView(itemElement); + }, [store, moves, composite, focusOnMove]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!moves) return; + if (!composite) return; + const { baseElement, activeId: activeId2 } = store.getState(); + const isSelfAcive = activeId2 === null; + if (!isSelfAcive) return; + if (!baseElement) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (previousElement) { + fireBlurEvent(previousElement, { relatedTarget: baseElement }); + } + if (!hasFocus(baseElement)) { + baseElement.focus(); + } + }, [store, moves, composite]); + const activeId = store.useState("activeId"); + const virtualFocus = store.useState("virtualFocus"); + useSafeLayoutEffect(() => { + var _a2; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; + const relatedTarget = activeElement || getActiveElement(previousElement); + if (relatedTarget === previousElement) return; + fireBlurEvent(previousElement, { relatedTarget }); + }, [store, activeId, virtualFocus, composite]); + const onKeyDownCapture = useKeyboardEventProxy( + store, + props.onKeyDownCapture, + previousElementRef + ); + const onKeyUpCapture = useKeyboardEventProxy( + store, + props.onKeyUpCapture, + previousElementRef + ); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (!virtualFocus2) return; + const previousActiveElement = event.relatedTarget; + const isSilentlyFocused = silentlyFocused(event.currentTarget); + if (isSelfTarget(event) && isSilentlyFocused) { + event.stopPropagation(); + previousElementRef.current = previousActiveElement; + } + }); + const onFocusProp = props.onFocus; + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (!composite) return; + if (!store) return; + const { relatedTarget } = event; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (virtualFocus2) { + if (isSelfTarget(event) && !isItem(store, relatedTarget)) { + queueMicrotask(scheduleFocus); + } + } else if (isSelfTarget(event)) { + store.setActiveId(null); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + var _a2; + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); + if (!virtualFocus2) return; + const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + const nextActiveElement = event.relatedTarget; + const nextActiveElementIsItem = isItem(store, nextActiveElement); + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (isSelfTarget(event) && nextActiveElementIsItem) { + if (nextActiveElement === activeElement) { + if (previousElement && previousElement !== nextActiveElement) { + fireBlurEvent(previousElement, event); + } + } else if (activeElement) { + fireBlurEvent(activeElement, event); + } else if (previousElement) { + fireBlurEvent(previousElement, event); + } + event.stopPropagation(); + } else { + const targetIsItem = isItem(store, event.target); + if (!targetIsItem && activeElement) { + fireBlurEvent(activeElement, event); + } + } + }); + const onKeyDownProp = props.onKeyDown; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + var _a2; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; + const isVertical = orientation !== "horizontal"; + const isHorizontal = orientation !== "vertical"; + const grid = isGrid(renderedItems); + const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; + if (isHorizontalKey && isTextField(event.currentTarget)) return; + const up = () => { + if (grid) { + const item = findFirstEnabledItemInTheLastRow(renderedItems); + return item == null ? void 0 : item.id; + } + return store == null ? void 0 : store.last(); + }; + const keyMap = { + ArrowUp: (grid || isVertical) && up, + ArrowRight: (grid || isHorizontal) && store.first, + ArrowDown: (grid || isVertical) && store.first, + ArrowLeft: (grid || isHorizontal) && store.last, + Home: store.first, + End: store.last, + PageUp: store.first, + PageDown: store.last + }; + const action = keyMap[event.key]; + if (action) { + const id = action(); + if (id !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(id); + } + } + }); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a2; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; + }); + props = __spreadProps(__spreadValues({ + "aria-activedescendant": activeDescendant + }, props), { + ref: useMergeRefs(ref, setBaseElement, props.ref), + onKeyDownCapture, + onKeyUpCapture, + onFocusCapture, + onFocus, + onBlurCapture, + onKeyDown + }); + const focusable = store.useState( + (state) => composite && (state.virtualFocus || state.activeId === null) + ); + props = useFocusable(__spreadValues({ focusable }, props)); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName3, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react13 = __toESM(require_react(), 1); +var TagName4 = "input"; +function isFirstItemAutoSelected(items, activeValue, autoSelect) { + if (!autoSelect) return false; + const firstItem = items.find((item) => !item.disabled && item.value); + return (firstItem == null ? void 0 : firstItem.value) === activeValue; +} +function hasCompletionString(value, activeValue) { + if (!activeValue) return false; + if (value == null) return false; + value = normalizeString(value); + return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; +} +function isInputEvent(event) { + return event.type === "input"; +} +function isAriaAutoCompleteValue(value) { + return value === "inline" || value === "list" || value === "both" || value === "none"; +} +function getDefaultAutoSelectId(items) { + const item = items.find((item2) => { + var _a; + if (item2.disabled) return false; + return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; + }); + return item == null ? void 0 : item.id; +} +var useCombobox = createHook( + function useCombobox2(_a) { + var _b = _a, { + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list" + } = _b, props = __objRest(_b, [ + "store", + "focusable", + "autoSelect", + "getAutoSelectId", + "setValueOnChange", + "showMinLength", + "showOnChange", + "showOnMouseDown", + "showOnClick", + "showOnKeyDown", + "showOnKeyPress", + "blurActiveItemOnClick", + "setValueOnClick", + "moveOnKeyPress", + "autoComplete" + ]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react13.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react13.useRef)(false); + const composingRef = (0, import_react13.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react13.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react13.useRef)(); + (0, import_react13.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a2; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return; + } + return state.activeValue; + }); + const items = store.useState("renderedItems"); + const open = store.useState("open"); + const contentElement = store.useState("contentElement"); + const value = (0, import_react13.useMemo)(() => { + if (!inline) return storeValue; + if (!canInline) return storeValue; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (firstItemAutoSelected) { + if (hasCompletionString(storeValue, inlineActiveValue)) { + const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; + return storeValue + slice; + } + return storeValue; + } + return inlineActiveValue || storeValue; + }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); + (0, import_react13.useEffect)(() => { + const element = ref.current; + if (!element) return; + const onCompositeItemMove = () => setCanInline(true); + element.addEventListener("combobox-item-move", onCompositeItemMove); + return () => { + element.removeEventListener("combobox-item-move", onCompositeItemMove); + }; + }, []); + (0, import_react13.useEffect)(() => { + if (!inline) return; + if (!canInline) return; + if (!inlineActiveValue) return; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (!firstItemAutoSelected) return; + if (!hasCompletionString(storeValue, inlineActiveValue)) return; + let cleanup = noop; + queueMicrotask(() => { + const element = ref.current; + if (!element) return; + const { start: prevStart, end: prevEnd } = getTextboxSelection(element); + const nextStart = storeValue.length; + const nextEnd = inlineActiveValue.length; + setSelectionRange(element, nextStart, nextEnd); + cleanup = () => { + if (!hasFocus(element)) return; + const { start, end } = getTextboxSelection(element); + if (start !== nextStart) return; + if (end !== nextEnd) return; + setSelectionRange(element, prevStart, prevEnd); + }; + }); + return () => cleanup(); + }, [ + valueUpdated, + inline, + canInline, + inlineActiveValue, + items, + autoSelect, + storeValue + ]); + const scrollingElementRef = (0, import_react13.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react13.useRef)(null); + (0, import_react13.useEffect)(() => { + if (!open) return; + if (!contentElement) return; + const scrollingElement = getScrollingElement(contentElement); + if (!scrollingElement) return; + scrollingElementRef.current = scrollingElement; + const onUserScroll = () => { + canAutoSelectRef.current = false; + }; + const onScroll = () => { + if (!store) return; + if (!canAutoSelectRef.current) return; + const { activeId } = store.getState(); + if (activeId === null) return; + if (activeId === autoSelectIdRef.current) return; + canAutoSelectRef.current = false; + }; + const options = { passive: true, capture: true }; + scrollingElement.addEventListener("wheel", onUserScroll, options); + scrollingElement.addEventListener("touchmove", onUserScroll, options); + scrollingElement.addEventListener("scroll", onScroll, options); + return () => { + scrollingElement.removeEventListener("wheel", onUserScroll, true); + scrollingElement.removeEventListener("touchmove", onUserScroll, true); + scrollingElement.removeEventListener("scroll", onScroll, true); + }; + }, [open, contentElement, store]); + useSafeLayoutEffect(() => { + if (!storeValue) return; + if (composingRef.current) return; + canAutoSelectRef.current = true; + }, [storeValue]); + useSafeLayoutEffect(() => { + if (autoSelect !== "always" && open) return; + canAutoSelectRef.current = open; + }, [autoSelect, open]); + const resetValueOnSelect = store.useState("resetValueOnSelect"); + useUpdateEffect(() => { + var _a2, _b2; + const canAutoSelect = canAutoSelectRef.current; + if (!store) return; + if (!open) return; + if (!canAutoSelect && !resetValueOnSelect) return; + const { baseElement, contentElement: contentElement2, activeId } = store.getState(); + if (baseElement && !hasFocus(baseElement)) return; + if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { + const observer = new MutationObserver(forceValueUpdate); + observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); + return () => observer.disconnect(); + } + if (autoSelect && canAutoSelect) { + const userAutoSelectId = getAutoSelectIdProp(items); + const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react13.useEffect)(() => { + if (!inline) return; + const combobox = ref.current; + if (!combobox) return; + const elements = [combobox, contentElement].filter( + (value2) => !!value2 + ); + const onBlur2 = (event) => { + if (elements.every((el) => isFocusEventOutside(event, el))) { + store == null ? void 0 : store.setValue(value); + } + }; + for (const element of elements) { + element.addEventListener("focusout", onBlur2); + } + return () => { + for (const element of elements) { + element.removeEventListener("focusout", onBlur2); + } + }; + }, [inline, contentElement, store, value]); + const canShow = (event) => { + const currentTarget = event.currentTarget; + return currentTarget.value.length >= showMinLength; + }; + const onChangeProp = props.onChange; + const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); + const setValueOnChangeProp = useBooleanEvent( + // If the combobox is combined with tags, the value will be set by the tag + // input component. + setValueOnChange != null ? setValueOnChange : !store.tag + ); + const onChange = useEvent((event) => { + onChangeProp == null ? void 0 : onChangeProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const currentTarget = event.currentTarget; + const { value: value2, selectionStart, selectionEnd } = currentTarget; + const nativeEvent = event.nativeEvent; + canAutoSelectRef.current = true; + if (isInputEvent(nativeEvent)) { + if (nativeEvent.isComposing) { + canAutoSelectRef.current = false; + composingRef.current = true; + } + if (inline) { + const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; + const caretAtEnd = selectionStart === value2.length; + setCanInline(textInserted && caretAtEnd); + } + } + if (setValueOnChangeProp(event)) { + const isSameValue = value2 === store.getState().value; + store.setValue(value2); + queueMicrotask(() => { + setSelectionRange(currentTarget, selectionStart, selectionEnd); + }); + if (inline && autoSelect && isSameValue) { + forceValueUpdate(); + } + } + if (showOnChangeProp(event)) { + store.show(); + } + if (!autoSelect || !canAutoSelectRef.current) { + store.setActiveId(null); + } + }); + const onCompositionEndProp = props.onCompositionEnd; + const onCompositionEnd = useEvent((event) => { + canAutoSelectRef.current = true; + composingRef.current = false; + onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); + if (event.defaultPrevented) return; + if (!autoSelect) return; + forceValueUpdate(); + }); + const onMouseDownProp = props.onMouseDown; + const blurActiveItemOnClickProp = useBooleanEvent( + blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement) + ); + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (event.button) return; + if (event.ctrlKey) return; + if (!store) return; + if (blurActiveItemOnClickProp(event)) { + store.setActiveId(null); + } + if (setValueOnClickProp(event)) { + store.setValue(value); + } + if (showOnClickProp(event)) { + queueBeforeEvent(event.currentTarget, "mouseup", store.show); + } + }); + const onKeyDownProp = props.onKeyDown; + const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (!event.repeat) { + canAutoSelectRef.current = false; + } + if (event.defaultPrevented) return; + if (event.ctrlKey) return; + if (event.altKey) return; + if (event.shiftKey) return; + if (event.metaKey) return; + if (!store) return; + const { open: open2 } = store.getState(); + if (open2) return; + if (event.key === "ArrowUp" || event.key === "ArrowDown") { + if (showOnKeyPressProp(event)) { + event.preventDefault(); + store.show(); + } + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + canAutoSelectRef.current = false; + onBlurProp == null ? void 0 : onBlurProp(event); + if (event.defaultPrevented) return; + }); + const id = useId3(props.id); + const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; + const isActiveItem = store.useState((state) => state.activeId === null); + props = __spreadProps(__spreadValues({ + id, + role: "combobox", + "aria-autocomplete": ariaAutoComplete, + "aria-haspopup": getPopupRole(contentElement, "listbox"), + "aria-expanded": open, + "aria-controls": contentElement == null ? void 0 : contentElement.id, + "data-active-item": isActiveItem || void 0, + value + }, props), { + ref: useMergeRefs(ref, props.ref), + onChange, + onCompositionEnd, + onMouseDown, + onKeyDown, + onBlur + }); + props = useComposite(__spreadProps(__spreadValues({ + store, + focusable + }, props), { + // Enable inline autocomplete when the user moves from the combobox input + // to an item. + moveOnKeyPress: (event) => { + if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; + if (inline) setCanInline(true); + return true; + } + })); + props = usePopoverAnchor(__spreadValues({ store }, props)); + return __spreadValues({ autoComplete: "off" }, props); + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName4, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js +var import_react14 = __toESM(require_react(), 1); +var TagName5 = "button"; +function isNativeClick(event) { + if (!event.isTrusted) return false; + const element = event.currentTarget; + if (event.key === "Enter") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; + } + if (event.key === " ") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; + } + return false; +} +var symbol = /* @__PURE__ */ Symbol("command"); +var useCommand = createHook( + function useCommand2(_a) { + var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); + const ref = (0, import_react14.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); + (0, import_react14.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react14.useState)(false); + const activeRef = (0, import_react14.useRef)(false); + const disabled = disabledFromProps(props); + const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + const element = event.currentTarget; + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (!isSelfTarget(event)) return; + if (isTextField(element)) return; + if (element.isContentEditable) return; + const isEnter = clickOnEnter && event.key === "Enter"; + const isSpace = clickOnSpace && event.key === " "; + const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; + const shouldPreventSpace = event.key === " " && !clickOnSpace; + if (shouldPreventEnter || shouldPreventSpace) { + event.preventDefault(); + return; + } + if (isEnter || isSpace) { + const nativeClick = isNativeClick(event); + if (isEnter) { + if (!nativeClick) { + event.preventDefault(); + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + const click = () => fireClickEvent(element, eventInit); + if (isFirefox()) { + queueBeforeEvent(element, "keyup", click); + } else { + queueMicrotask(click); + } + } + } else if (isSpace) { + activeRef.current = true; + if (!nativeClick) { + event.preventDefault(); + setActive(true); + } + } + } + }); + const onKeyUpProp = props.onKeyUp; + const onKeyUp = useEvent((event) => { + onKeyUpProp == null ? void 0 : onKeyUpProp(event); + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (event.metaKey) return; + const isSpace = clickOnSpace && event.key === " "; + if (activeRef.current && isSpace) { + activeRef.current = false; + if (!isNativeClick(event)) { + event.preventDefault(); + setActive(false); + const element = event.currentTarget; + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = __spreadProps(__spreadValues(__spreadValues({ + "data-active": active || void 0, + type: isNativeButton ? "button" : void 0 + }, metadataProps), props), { + ref: useMergeRefs(ref, props.ref), + onKeyDown, + onKeyUp + }); + props = useFocusable(props); + return props; + } +); +var Command = forwardRef22(function Command2(props) { + const htmlProps = useCommand(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js +var import_react15 = __toESM(require_react(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "span"; +function normalizeValue(value) { + return normalizeString(value).toLowerCase(); +} +function getOffsets(string, values) { + const offsets = []; + for (const value of values) { + let pos = 0; + const length = value.length; + while (string.indexOf(value, pos) !== -1) { + const index = string.indexOf(value, pos); + if (index !== -1) { + offsets.push([index, length]); + } + pos = index + 1; + } + } + return offsets; +} +function filterOverlappingOffsets(offsets) { + return offsets.filter(([offset, length], i2, arr) => { + return !arr.some( + ([o2, l2], j2) => j2 !== i2 && o2 <= offset && o2 + l2 >= offset + length + ); + }); +} +function sortOffsets(offsets) { + return offsets.sort(([a2], [b2]) => a2 - b2); +} +function splitValue(itemValue, userValue) { + if (!itemValue) return itemValue; + if (!userValue) return itemValue; + const userValues = toArray(userValue).filter(Boolean).map(normalizeValue); + const parts = []; + const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + "span", + { + "data-autocomplete-value": autocomplete ? "" : void 0, + "data-user-value": autocomplete ? void 0 : "", + children: value + }, + parts.length + ); + const offsets = sortOffsets( + filterOverlappingOffsets( + // Convert userValues into a set to avoid duplicates + getOffsets(normalizeValue(itemValue), new Set(userValues)) + ) + ); + if (!offsets.length) { + parts.push(span(itemValue, true)); + return parts; + } + const [firstOffset] = offsets[0]; + const values = [ + itemValue.slice(0, firstOffset), + ...offsets.flatMap(([offset, length], i2) => { + var _a; + const value = itemValue.slice(offset, offset + length); + const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; + const nextValue = itemValue.slice(offset + length, nextOffset); + return [value, nextValue]; + }) + ]; + values.forEach((value, i2) => { + if (!value) return; + parts.push(span(value, i2 % 2 === 0)); + }); + return parts; +} +var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) { + var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]); + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react15.useContext)(ComboboxItemValueContext); + const itemValue = value != null ? value : itemContext; + const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); + const children = (0, import_react15.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = __spreadValues({ + children + }, props); + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName6, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js +var import_react16 = __toESM(require_react(), 1); +var TagName7 = "div"; +function getMouseDestination(event) { + const relatedTarget = event.relatedTarget; + if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { + return relatedTarget; + } + return null; +} +function hoveringInside(event) { + const nextElement = getMouseDestination(event); + if (!nextElement) return false; + return contains(event.currentTarget, nextElement); +} +var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); +function movingToAnotherItem(event) { + let dest = getMouseDestination(event); + if (!dest) return false; + do { + if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; + dest = dest.parentElement; + } while (dest); + return false; +} +var useCompositeHover = createHook( + function useCompositeHover2(_a) { + var _b = _a, { + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover + } = _b, props = __objRest(_b, [ + "store", + "focusOnHover", + "blurOnHoverEnd" + ]); + const context = useCompositeContext(); + store = store || context; + invariant( + store, + "CompositeHover must be wrapped in a Composite component." + ); + const isMouseMoving = useIsMouseMoving(); + const onMouseMoveProp = props.onMouseMove; + const focusOnHoverProp = useBooleanEvent(focusOnHover); + const onMouseMove = useEvent((event) => { + onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (!focusOnHoverProp(event)) return; + if (!hasFocusWithin(event.currentTarget)) { + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (baseElement && !hasFocus(baseElement)) { + baseElement.focus(); + } + } + store == null ? void 0 : store.setActiveId(event.currentTarget.id); + }); + const onMouseLeaveProp = props.onMouseLeave; + const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); + const onMouseLeave = useEvent((event) => { + var _a2; + onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (hoveringInside(event)) return; + if (movingToAnotherItem(event)) return; + if (!focusOnHoverProp(event)) return; + if (!blurOnHoverEndProp(event)) return; + store == null ? void 0 : store.setActiveId(null); + (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }); + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName7, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js +var import_react17 = __toESM(require_react(), 1); +var TagName8 = "div"; +var useCollectionItem = createHook( + function useCollectionItem2(_a) { + var _b = _a, { + store, + shouldRegisterItem = true, + getItem = identity, + element + } = _b, props = __objRest(_b, [ + "store", + "shouldRegisterItem", + "getItem", + // @ts-expect-error This prop may come from a collection renderer. + "element" + ]); + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react17.useRef)(element); + (0, import_react17.useEffect)(() => { + const element2 = ref.current; + if (!id) return; + if (!element2) return; + if (!shouldRegisterItem) return; + const item = getItem({ id, element: element2 }); + return store == null ? void 0 : store.renderItem(item); + }, [id, shouldRegisterItem, getItem, store]); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref) + }); + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName8, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +var TagName9 = "button"; +function isEditableElement(element) { + if (isTextbox(element)) return true; + return element.tagName === "INPUT" && !isButton(element); +} +function getNextPageOffset(scrollingElement, pageUp = false) { + const height = scrollingElement.clientHeight; + const { top } = scrollingElement.getBoundingClientRect(); + const pageSize = Math.max(height * 0.875, height - 40) * 1.5; + const pageOffset = pageUp ? height - pageSize + top : pageSize + top; + if (scrollingElement.tagName === "HTML") { + return pageOffset + scrollingElement.scrollTop; + } + return pageOffset; +} +function getItemOffset(itemElement, pageUp = false) { + const { top } = itemElement.getBoundingClientRect(); + if (pageUp) { + return top + itemElement.clientHeight; + } + return top; +} +function findNextPageItemId(element, store, next, pageUp = false) { + var _a; + if (!store) return; + if (!next) return; + const { renderedItems } = store.getState(); + const scrollingElement = getScrollingElement(element); + if (!scrollingElement) return; + const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); + let id; + let prevDifference; + for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { + const previousId = id; + id = next(i2); + if (!id) break; + if (id === previousId) continue; + const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; + if (!itemElement) continue; + const itemOffset = getItemOffset(itemElement, pageUp); + const difference = itemOffset - nextPageOffset; + const absDifference = Math.abs(difference); + if (pageUp && difference <= 0 || !pageUp && difference >= 0) { + if (prevDifference !== void 0 && prevDifference < absDifference) { + id = previousId; + } + break; + } + prevDifference = absDifference; + } + return id; +} +function targetIsAnotherItem(event, store) { + if (isSelfTarget(event)) return false; + return isItem(store, event.target); +} +var useCompositeItem = createHook( + function useCompositeItem2(_a) { + var _b = _a, { + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp + } = _b, props = __objRest(_b, [ + "store", + "rowId", + "preventScrollOnKeyDown", + "moveOnKeyPress", + "tabbable", + "getItem", + "aria-setsize", + "aria-posinset" + ]); + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react18.useRef)(null); + const row = (0, import_react18.useContext)(CompositeRowContext); + const disabled = disabledFromProps(props); + const trulyDisabled = disabled && !props.accessibleWhenDisabled; + const { + rowId, + baseElement, + isActiveItem, + ariaSetSize, + ariaPosInSet, + isTabbable + } = useStoreStateObject(store, { + rowId(state) { + if (rowIdProp) return rowIdProp; + if (!state) return; + if (!(row == null ? void 0 : row.baseElement)) return; + if (row.baseElement !== state.baseElement) return; + return row.id; + }, + baseElement(state) { + return (state == null ? void 0 : state.baseElement) || void 0; + }, + isActiveItem(state) { + return !!state && state.activeId === id; + }, + ariaSetSize(state) { + if (ariaSetSizeProp != null) return ariaSetSizeProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaSetSize)) return; + if (row.baseElement !== state.baseElement) return; + return row.ariaSetSize; + }, + ariaPosInSet(state) { + if (ariaPosInSetProp != null) return ariaPosInSetProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaPosInSet)) return; + if (row.baseElement !== state.baseElement) return; + const itemsInRow = state.renderedItems.filter( + (item) => item.rowId === rowId + ); + return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); + }, + isTabbable(state) { + if (!(state == null ? void 0 : state.renderedItems.length)) return true; + if (state.virtualFocus) return false; + if (tabbable) return true; + if (state.activeId === null) return false; + const item = store == null ? void 0 : store.item(state.activeId); + if (item == null ? void 0 : item.disabled) return true; + if (!(item == null ? void 0 : item.element)) return true; + return state.activeId === id; + } + }); + const getItem = (0, import_react18.useCallback)( + (item) => { + var _a2; + const nextItem = __spreadProps(__spreadValues({}, item), { + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a2 = item.element) == null ? void 0 : _a2.textContent + }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react18.useRef)(false); + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (isPortalEvent(event)) return; + if (!id) return; + if (!store) return; + if (targetIsAnotherItem(event, store)) return; + const { virtualFocus, baseElement: baseElement2 } = store.getState(); + store.setActiveId(id); + if (isTextbox(event.currentTarget)) { + selectTextField(event.currentTarget); + } + if (!virtualFocus) return; + if (!isSelfTarget(event)) return; + if (isEditableElement(event.currentTarget)) return; + if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; + if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { + event.currentTarget.scrollIntoView({ + block: "nearest", + inline: "nearest" + }); + } + hasFocusedComposite.current = true; + const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); + if (fromComposite) { + focusSilently(baseElement2); + } else { + baseElement2.focus(); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + const state = store == null ? void 0 : store.getState(); + if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { + hasFocusedComposite.current = false; + event.preventDefault(); + event.stopPropagation(); + } + }); + const onKeyDownProp = props.onKeyDown; + const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!isSelfTarget(event)) return; + if (!store) return; + const { currentTarget } = event; + const state = store.getState(); + const item = store.item(id); + const isGrid2 = !!(item == null ? void 0 : item.rowId); + const isVertical = state.orientation !== "horizontal"; + const isHorizontal = state.orientation !== "vertical"; + const canHomeEnd = () => { + if (isGrid2) return true; + if (isHorizontal) return true; + if (!state.baseElement) return true; + if (!isTextField(state.baseElement)) return true; + return false; + }; + const keyMap = { + ArrowUp: (isGrid2 || isVertical) && store.up, + ArrowRight: (isGrid2 || isHorizontal) && store.next, + ArrowDown: (isGrid2 || isVertical) && store.down, + ArrowLeft: (isGrid2 || isHorizontal) && store.previous, + Home: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.first(); + } + return store == null ? void 0 : store.previous(-1); + }, + End: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.last(); + } + return store == null ? void 0 : store.next(-1); + }, + PageUp: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); + }, + PageDown: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); + } + }; + const action = keyMap[event.key]; + if (action) { + if (isTextbox(currentTarget)) { + const selection = getTextboxSelection(currentTarget); + const isLeft = isHorizontal && event.key === "ArrowLeft"; + const isRight = isHorizontal && event.key === "ArrowRight"; + const isUp = isVertical && event.key === "ArrowUp"; + const isDown = isVertical && event.key === "ArrowDown"; + if (isRight || isDown) { + const { length: valueLength } = getTextboxValue(currentTarget); + if (selection.end !== valueLength) return; + } else if ((isLeft || isUp) && selection.start !== 0) return; + } + const nextId = action(); + if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(nextId); + } + } + }); + const providerValue = (0, import_react18.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = __spreadProps(__spreadValues({ + id, + "data-active-item": isActiveItem || void 0 + }, props), { + ref: useMergeRefs(ref, props.ref), + tabIndex: isTabbable ? props.tabIndex : -1, + onFocus, + onBlurCapture, + onKeyDown + }); + props = useCommand(props); + props = useCollectionItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + })); + return removeUndefinedValues(__spreadProps(__spreadValues({}, props), { + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + })); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName9, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +var TagName10 = "div"; +function isSelected(storeValue, itemValue) { + if (itemValue == null) return; + if (storeValue == null) return false; + if (Array.isArray(storeValue)) { + return storeValue.includes(itemValue); + } + return storeValue === itemValue; +} +function getItemRole(popupRole) { + var _a; + const itemRoleByPopupRole = { + menu: "menuitem", + listbox: "option", + tree: "treeitem" + }; + const key = popupRole; + return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; +} +var useComboboxItem = createHook( + function useComboboxItem2(_a) { + var _b = _a, { + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp + } = _b, props = __objRest(_b, [ + "store", + "value", + "hideOnClick", + "setValueOnClick", + "selectValueOnClick", + "resetValueOnSelect", + "focusOnHover", + "moveOnKeyPress", + "getItem" + ]); + var _a2; + const context = useComboboxScopedContext(); + store = store || context; + invariant( + store, + "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." + ); + const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, { + resetValueOnSelectState: "resetValueOnSelect", + multiSelectable(state) { + return Array.isArray(state.selectedValue); + }, + selected(state) { + return isSelected(state.selectedValue, value); + } + }); + const getItem = (0, import_react19.useCallback)( + (item) => { + const nextItem = __spreadProps(__spreadValues({}, item), { value }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [value, getItemProp] + ); + setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; + hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; + const onClickProp = props.onClick; + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); + const resetValueOnSelectProp = useBooleanEvent( + (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable + ); + const hideOnClickProp = useBooleanEvent(hideOnClick); + const onClick = useEvent((event) => { + onClickProp == null ? void 0 : onClickProp(event); + if (event.defaultPrevented) return; + if (isDownloading(event)) return; + if (isOpeningInNewTab(event)) return; + if (value != null) { + if (selectValueOnClickProp(event)) { + if (resetValueOnSelectProp(event)) { + store == null ? void 0 : store.resetValue(); + } + store == null ? void 0 : store.setSelectedValue((prevValue) => { + if (!Array.isArray(prevValue)) return value; + if (prevValue.includes(value)) { + return prevValue.filter((v2) => v2 !== value); + } + return [...prevValue, value]; + }); + } + if (setValueOnClickProp(event)) { + store == null ? void 0 : store.setValue(value); + } + } + if (hideOnClickProp(event)) { + store == null ? void 0 : store.hide(); + } + }); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (!baseElement) return; + if (hasFocus(baseElement)) return; + const printable = event.key.length === 1; + if (printable || event.key === "Backspace" || event.key === "Delete") { + queueMicrotask(() => baseElement.focus()); + if (isTextField(baseElement)) { + store == null ? void 0 : store.setValue(baseElement.value); + } + } + }); + if (multiSelectable && selected != null) { + props = __spreadValues({ + "aria-selected": selected + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react19.useContext)(ComboboxListRoleContext); + props = __spreadProps(__spreadValues({ + role: getItemRole(popupRole), + children: value + }, props), { + onClick, + onKeyDown + }); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + // Dispatch a custom event on the combobox input when moving to an item + // with the keyboard so the Combobox component can enable inline + // autocompletion. + moveOnKeyPress: (event) => { + if (!moveOnKeyPressProp(event)) return false; + const moveEvent = new Event("combobox-item-move"); + const baseElement = store == null ? void 0 : store.getState().baseElement; + baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); + return true; + } + })); + props = useCompositeHover(__spreadValues({ store, focusOnHover }, props)); + return props; + } +); +var ComboboxItem = memo22( + forwardRef22(function ComboboxItem2(props) { + const htmlProps = useComboboxItem(props); + return createElement3(TagName10, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName11 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const comboboxId = store.useState((state) => { + var _a2; + return (_a2 = state.baseElement) == null ? void 0 : _a2.id; + }); + props = __spreadValues({ + htmlFor: comboboxId + }, props); + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName11, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js +var import_react20 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var TagName12 = "div"; +function afterTimeout(timeoutMs, cb) { + const timeoutId = setTimeout(cb, timeoutMs); + return () => clearTimeout(timeoutId); +} +function afterPaint2(cb) { + let raf = requestAnimationFrame(() => { + raf = requestAnimationFrame(cb); + }); + return () => cancelAnimationFrame(raf); +} +function parseCSSTime(...times) { + return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { + const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; + const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; + if (currentTime > longestTime) return currentTime; + return longestTime; + }, 0); +} +function isHidden(mounted, hidden, alwaysVisible) { + return !alwaysVisible && hidden !== false && (!mounted || !!hidden); +} +var useDisclosureContent = createHook(function useDisclosureContent2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const context = useDisclosureProviderContext(); + store = store || context; + invariant( + store, + "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." + ); + const ref = (0, import_react20.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react20.useState)(null); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const animated = store.useState("animated"); + const contentElement = store.useState("contentElement"); + const otherElement = useStoreState(store.disclosure, "contentElement"); + useSafeLayoutEffect(() => { + if (!ref.current) return; + store == null ? void 0 : store.setContentElement(ref.current); + }, [store]); + useSafeLayoutEffect(() => { + let previousAnimated; + store == null ? void 0 : store.setState("animated", (animated2) => { + previousAnimated = animated2; + return true; + }); + return () => { + if (previousAnimated === void 0) return; + store == null ? void 0 : store.setState("animated", previousAnimated); + }; + }, [store]); + useSafeLayoutEffect(() => { + if (!animated) return; + if (!(contentElement == null ? void 0 : contentElement.isConnected)) { + setTransition(null); + return; + } + return afterPaint2(() => { + setTransition(open ? "enter" : mounted ? "leave" : null); + }); + }, [animated, contentElement, open, mounted]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!animated) return; + if (!transition) return; + if (!contentElement) return; + const stopAnimation = () => store == null ? void 0 : store.setState("animating", false); + const stopAnimationSync = () => (0, import_react_dom.flushSync)(stopAnimation); + if (transition === "leave" && open) return; + if (transition === "enter" && !open) return; + if (typeof animated === "number") { + const timeout2 = animated; + return afterTimeout(timeout2, stopAnimationSync); + } + const { + transitionDuration, + animationDuration, + transitionDelay, + animationDelay + } = getComputedStyle(contentElement); + const { + transitionDuration: transitionDuration2 = "0", + animationDuration: animationDuration2 = "0", + transitionDelay: transitionDelay2 = "0", + animationDelay: animationDelay2 = "0" + } = otherElement ? getComputedStyle(otherElement) : {}; + const delay = parseCSSTime( + transitionDelay, + animationDelay, + transitionDelay2, + animationDelay2 + ); + const duration = parseCSSTime( + transitionDuration, + animationDuration, + transitionDuration2, + animationDuration2 + ); + const timeout = delay + duration; + if (!timeout) { + if (transition === "enter") { + store.setState("animated", false); + } + stopAnimation(); + return; + } + const frameRate = 1e3 / 60; + const maxTimeout = Math.max(timeout - frameRate, 0); + return afterTimeout(maxTimeout, stopAnimationSync); + }, [store, animated, contentElement, otherElement, open, transition]); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react20.useMemo)(() => { + if (hidden) { + return __spreadProps(__spreadValues({}, styleProp), { display: "none" }); + } + return styleProp; + }, [hidden, styleProp]); + props = __spreadProps(__spreadValues({ + id, + "data-open": open || void 0, + "data-enter": transition === "enter" || void 0, + "data-leave": transition === "leave" || void 0, + hidden + }, props), { + ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), + style + }); + return removeUndefinedValues(props); +}); +var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { + const htmlProps = useDisclosureContent(props); + return createElement3(TagName12, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2(_a) { + var _b = _a, { + unmountOnHide + } = _b, props = __objRest(_b, [ + "unmountOnHide" + ]); + const context = useDisclosureProviderContext(); + const store = props.store || context; + const mounted = useStoreState( + store, + (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) + ); + if (mounted === false) return null; + return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(DisclosureContentImpl, __spreadValues({}, props)); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js +var import_react21 = __toESM(require_react(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const scopedContext = useComboboxScopedContext(true); + const context = useComboboxContext(); + store = store || context; + const scopedContextSameStore = !!store && store === scopedContext; + invariant( + store, + "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react21.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: "none" }) : props.style; + const multiSelectable = store.useState( + (state) => Array.isArray(state.selectedValue) + ); + const role = useAttribute(ref, "role", props.role); + const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; + const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; + const [hasListboxInside, setHasListboxInside] = (0, import_react21.useState)(false); + const contentElement = store.useState("contentElement"); + useSafeLayoutEffect(() => { + if (!mounted) return; + const element = ref.current; + if (!element) return; + if (contentElement !== element) return; + const callback = () => { + setHasListboxInside(!!element.querySelector("[role='listbox']")); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { + subtree: true, + childList: true, + attributeFilter: ["role"] + }); + callback(); + return () => observer.disconnect(); + }, [mounted, contentElement]); + if (!hasListboxInside) { + props = __spreadValues({ + role: "listbox", + "aria-multiselectable": ariaMultiSelectable + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = __spreadProps(__spreadValues({ + id, + hidden + }, props), { + ref: useMergeRefs(setContentElement, ref, props.ref), + style + }); + return removeUndefinedValues(props); + } +); +var ComboboxList = forwardRef22(function ComboboxList2(props) { + const htmlProps = useComboboxList(props); + return createElement3(TagName13, htmlProps); +}); + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_remove_accents = __toESM(require_remove_accents(), 1); +var import_compose8 = __toESM(require_compose(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); +var import_element24 = __toESM(require_element(), 1); +var import_components19 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/utils.mjs +var EMPTY_ARRAY3 = []; +var getCurrentValue = (filterDefinition, currentFilter) => { + if (filterDefinition.singleSelection) { + return currentFilter?.value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value; + } + if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { + return [currentFilter.value]; + } + return EMPTY_ARRAY3; +}; + +// packages/dataviews/build-module/hooks/use-elements.mjs +var import_element23 = __toESM(require_element(), 1); +var EMPTY_ARRAY4 = []; +function useElements({ + elements, + getElements +}) { + const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4; + const [records, setRecords] = (0, import_element23.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element23.useState)(false); + (0, import_element23.useEffect)(() => { + if (!getElements) { + setRecords(staticElements); + return; + } + let cancelled = false; + setIsLoading(true); + getElements().then((fetchedElements) => { + if (!cancelled) { + const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; + setRecords(dynamicElements); + } + }).catch(() => { + if (!cancelled) { + setRecords(staticElements); + } + }).finally(() => { + if (!cancelled) { + setIsLoading(false); + } + }); + return () => { + cancelled = true; + }; + }, [getElements, staticElements]); + return { + elements: records, + isLoading + }; +} + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +function normalizeSearchInput(input = "") { + return (0, import_remove_accents.default)(input.trim().toLowerCase()); +} +var getNewValue = (filterDefinition, currentFilter, value) => { + if (filterDefinition.singleSelection) { + return value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; + } + return [value]; +}; +function generateFilterElementCompositeItemId(prefix, filterElementValue) { + return `${prefix}-${filterElementValue}`; +} +var MultiSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-multi-selection", + { "is-selected": selected } + ), + children: selected && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components19.Icon, { icon: check_default }) + } + ); +}; +var SingleSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-single-selection", + { "is-selected": selected } + ) + } + ); +}; +function ListBox({ view, filter, onChangeView }) { + const baseId = (0, import_compose8.useInstanceId)(ListBox, "dataviews-filter-list-box"); + const [activeCompositeId, setActiveCompositeId] = (0, import_element24.useState)( + // When there are one or less operators, the first item is set as active + // (by setting the initial `activeId` to `undefined`). + // With 2 or more operators, the focus is moved on the operators control + // (by setting the initial `activeId` to `null`), meaning that there won't + // be an active item initially. Focus is then managed via the + // `onFocusVisible` callback. + filter.operators?.length === 1 ? void 0 : null + ); + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components19.Composite, + { + virtualFocus: true, + focusLoop: true, + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + role: "listbox", + className: "dataviews-filters__search-widget-listbox", + "aria-label": (0, import_i18n22.sprintf)( + /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ + (0, import_i18n22.__)("List of: %1$s"), + filter.name + ), + onFocusVisible: () => { + if (!activeCompositeId && filter.elements.length) { + setActiveCompositeId( + generateFilterElementCompositeItemId( + baseId, + filter.elements[0].value + ) + ); + } + }, + render: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components19.Composite.Typeahead, {}), + children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)( + import_components19.Composite.Hover, + { + render: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components19.Composite.Item, + { + id: generateFilterElementCompositeItemId( + baseId, + element.value + ), + render: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + "div", + { + "aria-label": element.label, + role: "option", + className: "dataviews-filters__search-widget-listitem" + } + ), + onClick: () => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + } + } + ), + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes(element.value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: element.label }) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element24.useState)(""); + const deferredSearchValue = (0, import_element24.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element24.useMemo)(() => { + const normalizedSearch = normalizeSearchInput(deferredSearchValue); + return filter.elements.filter( + (item) => normalizeSearchInput(item.label).includes(normalizedSearch) + ); + }, [filter.elements, deferredSearchValue]); + return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)( + ComboboxProvider, + { + selectedValue: currentValue, + setSelectedValue: (value) => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map((_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value + }; + } + return _filter; + }) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + setValue: setSearchValue, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + ComboboxLabel, + { + render: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components19.VisuallyHidden, { children: (0, import_i18n22.__)("Search items") }), + children: (0, import_i18n22.__)("Search items") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + Combobox, + { + autoSelect: "always", + placeholder: (0, import_i18n22.__)("Search"), + className: "dataviews-filters__search-widget-filter-combobox__input" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components19.Icon, { icon: search_default }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)( + ComboboxList, + { + className: "dataviews-filters__search-widget-filter-combobox-list", + alwaysVisible: true, + children: [ + matches.map((element) => { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)( + ComboboxItem, + { + resetValueOnSelect: false, + value: element.value, + className: "dataviews-filters__search-widget-listitem", + hideOnClick: false, + setValueOnClick: false, + focusOnHover: true, + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes( + element.value + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + ComboboxItemValue, + { + className: "dataviews-filters__search-widget-filter-combobox-item-value", + value: element.label + } + ), + !!element.description && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) + ] }) + ] + }, + element.value + ); + }), + !matches.length && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { children: (0, import_i18n22.__)("No results found") }) + ] + } + ) + ] + } + ); +} +function SearchWidget(props) { + const { elements, isLoading } = useElements({ + elements: props.filter.elements, + getElements: props.filter.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components19.Spinner, {}) }); + } + if (elements.length === 0) { + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n22.__)("No elements found") }); + } + const Widget = elements.length > 10 ? ComboboxList22 : ListBox; + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Widget, { ...props, filter: { ...props.filter, elements } }); +} + +// packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs +var import_es6 = __toESM(require_es6(), 1); +var import_compose9 = __toESM(require_compose(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_components20 = __toESM(require_components(), 1); +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +function InputWidget({ + filter, + view, + onChangeView, + fields +}) { + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const field = (0, import_element25.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Deactivate validation for filters. + isValid: {}, + // Configure getValue/setValue as if Item was a plain object. + getValue: ({ item }) => item[currentField.id], + setValue: ({ value }) => ({ + [currentField.id]: value + }) + }; + } + return currentField; + }, [fields, filter.field]); + const data = (0, import_element25.useMemo)(() => { + return (view.filters ?? []).reduce( + (acc, activeFilter) => { + acc[activeFilter.field] = activeFilter.value; + return acc; + }, + {} + ); + }, [view.filters]); + const handleChange = (0, import_compose9.useEvent)((updatedData) => { + if (!field || !currentFilter) { + return; + } + const nextValue = field.getValue({ item: updatedData }); + if ((0, import_es6.default)(nextValue, currentValue)) { + return; + } + onChangeView({ + ...view, + filters: (view.filters ?? []).map( + (_filter) => _filter.field === filter.field ? { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + // Consider empty strings as undefined: + // + // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records + // - empty string as value means "search empty string": returns only the records that have an empty string as value + // + // In practice, this means the filter will not be able to find an empty string as the value. + value: nextValue === "" ? void 0 : nextValue + } : _filter + ) + }); + }); + if (!field || !field.Edit || !currentFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components20.Flex, + { + className: "dataviews-filters__user-input-widget", + gap: 2.5, + direction: "column", + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + field.Edit, + { + hideLabelFromVision: true, + data, + field, + operator: currentFilter.operator, + onChange: handleChange + } + ) + } + ); +} + +// packages/dataviews/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); + +// packages/dataviews/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} + +// packages/dataviews/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} + +// packages/dataviews/node_modules/date-fns/addDays.js +function addDays(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) return _date; + _date.setDate(_date.getDate() + amount); + return _date; +} + +// packages/dataviews/node_modules/date-fns/addMonths.js +function addMonths(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) { + return _date; + } + const dayOfMonth = _date.getDate(); + const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); + endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); + const daysInMonth = endOfDesiredMonth.getDate(); + if (dayOfMonth >= daysInMonth) { + return endOfDesiredMonth; + } else { + _date.setFullYear( + endOfDesiredMonth.getFullYear(), + endOfDesiredMonth.getMonth(), + dayOfMonth + ); + return _date; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} + +// packages/dataviews/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} + +// packages/dataviews/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} + +// packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} + +// packages/dataviews/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} + +// packages/dataviews/node_modules/date-fns/addWeeks.js +function addWeeks(date, amount, options) { + return addDays(date, amount * 7, options); +} + +// packages/dataviews/node_modules/date-fns/addYears.js +function addYears(date, amount, options) { + return addMonths(date, amount * 12, options); +} + +// packages/dataviews/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} + +// packages/dataviews/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} + +// packages/dataviews/node_modules/date-fns/startOfMonth.js +function startOfMonth(date, options) { + const _date = toDate(date, options?.in); + _date.setDate(1); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = (token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format6 = args.formats[width] || args.formats[args.defaultWidth]; + return format6; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = (dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}; +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: (quarter) => quarter - 1 + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: (value) => parseInt(value, 10) + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: (index) => index + 1 + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// packages/dataviews/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} + +// packages/dataviews/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} + +// packages/dataviews/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// packages/dataviews/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, + // Year + y: function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone quarter + q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, + // Month + M: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, + // Stand-alone month + L: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, + // Local week of year + w: function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Local day of week + e: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone local day of week + c: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, + // ISO day of week + i: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // AM or PM + a: function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // AM, PM, midnight, noon + b: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // Hour [1-12] + h: function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (GMT) + O: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (specific non-location) + z: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Seconds timestamp + t: function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + } +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}; +var timeLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}; +var dateTimeLongFormatter = (pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +function warnOrThrowProtectedError(token, format6, input) { + const _message = message(token, format6, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +function message(token, format6, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} + +// packages/dataviews/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} + +// packages/dataviews/node_modules/date-fns/subDays.js +function subDays(date, amount, options) { + return addDays(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subMonths.js +function subMonths(date, amount, options) { + return addMonths(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subWeeks.js +function subWeeks(date, amount, options) { + return addWeeks(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subYears.js +function subYears(date, amount, options) { + return addYears(date, -amount, options); +} + +// packages/dataviews/build-module/utils/operators.mjs +var import_i18n23 = __toESM(require_i18n(), 1); +var import_element26 = __toESM(require_element(), 1); +var import_date = __toESM(require_date(), 1); +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var filterTextWrappers = { + Name: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), + Value: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) +}; +function getRelativeDate(value, unit) { + switch (unit) { + case "days": + return subDays(/* @__PURE__ */ new Date(), value); + case "weeks": + return subWeeks(/* @__PURE__ */ new Date(), value); + case "months": + return subMonths(/* @__PURE__ */ new Date(), value); + case "years": + return subYears(/* @__PURE__ */ new Date(), value); + default: + return /* @__PURE__ */ new Date(); + } +} +var isNoneOperatorDefinition = { + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is none of"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ + (0, import_i18n23.__)("%1$s is none of: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter: ((item, field, filterValue) => { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return !filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return !filterValue.includes(fieldValue); + } + return false; + }), + selection: "multi" +}; +var OPERATORS = [ + { + name: OPERATOR_IS_ANY, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return filterValue.includes(fieldValue); + } + return false; + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NONE, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_IS_ALL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes all"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes all: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + return filterValue.every((value) => { + return field.getValue({ item })?.includes(value); + }); + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NOT_ALL, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_BETWEEN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Between (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ + (0, import_i18n23.__)( + "%1$s between (inc): %2$s and %3$s" + ), + filter.name, + activeElements[0].label[0], + activeElements[0].label[1] + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { + return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; + } + return false; + }, + selection: "custom" + }, + { + name: OPERATOR_IN_THE_PAST, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("In the past"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ + (0, import_i18n23.__)( + "%1$s is in the past: %2$s" + ), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); + }, + selection: "custom" + }, + { + name: OPERATOR_OVER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Over"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ + (0, import_i18n23.__)("%1$s is over: %2$s"), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue < targetDate; + }, + selection: "custom" + }, + { + name: OPERATOR_IS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue === field.getValue({ item }) || filterValue === void 0; + }, + selection: "single" + }, + { + name: OPERATOR_IS_NOT, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is not"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue !== field.getValue({ item }); + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ + (0, import_i18n23.__)("%1$s is less than: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue < filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue > filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is less than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue <= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue >= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is before: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate < filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is after: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate > filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or before: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate <= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or after: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate >= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Contains"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ + (0, import_i18n23.__)("%1$s contains: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Doesn't contain"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ + (0, import_i18n23.__)( + "%1$s doesn't contain: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_STARTS_WITH, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Starts with"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ + (0, import_i18n23.__)("%1$s starts with: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("On"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() === fieldDate.getTime(); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Not on"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() !== fieldDate.getTime(); + }, + selection: "single" + } +]; +var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name); +var getAllOperatorNames = () => OPERATORS.map((op) => op.name); +var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some( + (op) => op.name === name +); +var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var ENTER = "Enter"; +var SPACE = " "; +var FilterText = ({ + activeElements, + filterInView, + filter +}) => { + if (activeElements === void 0 || activeElements.length === 0) { + return filter.name; + } + const operator = getOperatorByName(filterInView?.operator); + if (operator !== void 0) { + return operator.filterText(filter, activeElements); + } + return (0, import_i18n24.sprintf)( + /* translators: 1: Filter name e.g.: "Unknown status for Author". */ + (0, import_i18n24.__)("Unknown status for %1$s"), + filter.name + ); +}; +function OperatorSelector({ + filter, + view, + onChangeView +}) { + const operatorOptions = filter.operators?.map((operator) => ({ + value: operator, + label: getOperatorByName(operator)?.label || operator + })); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const value = currentFilter?.operator || filter.operators[0]; + return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "flex-start", + className: "dataviews-filters__summary-operators-container", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_components21.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), + /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + import_components21.SelectControl, + { + className: "dataviews-filters__summary-operators-filter-select", + label: (0, import_i18n24.__)("Conditions"), + value, + options: operatorOptions, + onChange: (newValue) => { + const newOperator = newValue; + const currentOperator = currentFilter?.operator; + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + const currentOpSelectionModel = getOperatorByName( + currentOperator + )?.selection; + const newOpSelectionModel = getOperatorByName( + newOperator + )?.selection; + const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ + currentOpSelectionModel, + newOpSelectionModel + ].includes("custom"); + return { + ..._filter, + value: shouldResetValue ? void 0 : _filter.value, + operator: newOperator + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: newOperator, + value: void 0 + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + size: "small", + variant: "minimal", + hideLabelFromVision: true + } + ) + ] + } + ); +} +function Filter({ + addFilterRef, + openedFilter, + fields, + ...commonProps +}) { + const toggleRef = (0, import_element27.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element27.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Configure getValue as if Item was a plain object. + // See related input-widget.tsx + getValue: ({ item }) => item[currentField.id] + }; + } + return currentField; + }, [fields, filter.field]); + const { elements } = useElements({ + elements: filter.elements, + getElements: filter.getElements + }); + if (elements.length > 0) { + activeElements = elements.filter((element) => { + if (filter.singleSelection) { + return element.value === filterInView?.value; + } + return filterInView?.value?.includes(element.value); + }); + } else if (Array.isArray(filterInView?.value)) { + const label = filterInView.value.map((v2) => { + const formattedValue = field?.getValueFormatted({ + item: { [field.id]: v2 }, + field + }); + return formattedValue || String(v2); + }); + activeElements = [ + { + value: filterInView.value, + // @ts-ignore + label + } + ]; + } else if (typeof filterInView?.value === "object") { + activeElements = [ + { value: filterInView.value, label: filterInView.value } + ]; + } else if (filterInView?.value !== void 0) { + const label = field !== void 0 ? field.getValueFormatted({ + item: { [field.id]: filterInView.value }, + field + }) : String(filterInView.value); + activeElements = [ + { + value: filterInView.value, + label + } + ]; + } + const isPrimary = filter.isPrimary; + const isLocked = filterInView?.isLocked; + const hasValues = !isLocked && filterInView?.value !== void 0; + const canResetOrRemove = !isLocked && (!isPrimary || hasValues); + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + import_components21.Dropdown, + { + defaultOpen: openedFilter === filter.field, + contentClassName: "dataviews-filters__summary-popover", + popoverProps: { placement: "bottom-start", role: "dialog" }, + onClose: () => { + toggleRef.current?.focus(); + }, + renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ + /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + import_components21.Tooltip, + { + text: (0, import_i18n24.sprintf)( + /* translators: 1: Filter name. */ + (0, import_i18n24.__)("Filter by: %1$s"), + filter.name.toLowerCase() + ), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + "div", + { + className: clsx_default( + "dataviews-filters__summary-chip", + { + "has-reset": canResetOrRemove, + "has-values": hasValues, + "is-not-clickable": isLocked + } + ), + role: "button", + tabIndex: isLocked ? -1 : 0, + onClick: () => { + if (!isLocked) { + onToggle(); + } + }, + onKeyDown: (event) => { + if (!isLocked && [ENTER, SPACE].includes(event.key)) { + onToggle(); + event.preventDefault(); + } + }, + "aria-disabled": isLocked, + "aria-pressed": isOpen, + "aria-expanded": isOpen, + ref: toggleRef, + children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + FilterText, + { + activeElements, + filterInView, + filter + } + ) + } + ) + } + ), + canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + import_components21.Tooltip, + { + text: isPrimary ? (0, import_i18n24.__)("Reset") : (0, import_i18n24.__)("Remove"), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + "button", + { + className: clsx_default( + "dataviews-filters__summary-chip-remove", + { "has-values": hasValues } + ), + onClick: () => { + onChangeView({ + ...view, + page: 1, + filters: view.filters?.filter( + (_filter) => _filter.field !== filter.field + ) + }); + if (!isPrimary) { + addFilterRef.current?.focus(); + } else { + toggleRef.current?.focus(); + } + }, + children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_components21.Icon, { icon: close_small_default }) + } + ) + } + ) + ] }), + renderContent: () => { + return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(OperatorSelector, { ...commonProps }), + commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + SearchWidget, + { + ...commonProps, + filter: { + ...commonProps.filter, + elements + } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(InputWidget, { ...commonProps, fields }) + ] }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs +var import_components22 = __toESM(require_components(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); +var import_element28 = __toESM(require_element(), 1); +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock(import_components22.privateApis); +function AddFilterMenu({ + filters, + view, + onChangeView, + setOpenedFilter, + triggerProps +}) { + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(Menu4, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Menu4.TriggerButton, { ...triggerProps }), + /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Menu4.Popover, { children: inactiveFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + Menu4.Item, + { + onClick: () => { + setOpenedFilter(filter.field); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: filter.field, + value: void 0, + operator: filter.operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Menu4.ItemLabel, { children: filter.name }) + }, + filter.field + ); + }) }) + ] }); +} +function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { + if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { + return null; + } + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + AddFilterMenu, + { + triggerProps: { + render: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + import_components22.Button, + { + accessibleWhenDisabled: true, + size: "compact", + className: "dataviews-filters-button", + variant: "tertiary", + disabled: !inactiveFilters.length, + ref + } + ), + children: (0, import_i18n25.__)("Add filter") + }, + ...{ filters, view, onChangeView, setOpenedFilter } + } + ); +} +var add_filter_default = (0, import_element28.forwardRef)(AddFilter); + +// packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs +var import_components23 = __toESM(require_components(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +function ResetFilter({ + filters, + view, + onChangeView +}) { + const isPrimary = (field) => filters.some( + (_filter) => _filter.field === field && _filter.isPrimary + ); + const isDisabled = !view.search && !view.filters?.some( + (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) + ); + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + import_components23.Button, + { + disabled: isDisabled, + accessibleWhenDisabled: true, + size: "compact", + variant: "tertiary", + className: "dataviews-filters__reset-button", + onClick: () => { + onChangeView({ + ...view, + page: 1, + search: "", + filters: view.filters?.filter((f2) => !!f2.isLocked) || [] + }); + }, + children: (0, import_i18n26.__)("Reset") + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs +var import_element29 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element29.useMemo)(() => { + const filters = []; + fields.forEach((field) => { + if (field.filterBy === false || !field.hasElements && !field.Edit) { + return; + } + const operators = field.filterBy.operators; + const isPrimary = !!field.filterBy?.isPrimary; + const isLocked = view.filters?.some( + (f2) => f2.field === field.id && !!f2.isLocked + ) ?? false; + filters.push({ + field: field.id, + name: field.label, + elements: field.elements, + getElements: field.getElements, + hasElements: field.hasElements, + singleSelection: operators.some( + (op) => isSingleSelectionOperator(op) + ), + operators, + isVisible: isLocked || isPrimary || !!view.filters?.some( + (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) + ), + isPrimary, + isLocked + }); + }); + filters.sort((a2, b2) => { + if (a2.isLocked && !b2.isLocked) { + return -1; + } + if (!a2.isLocked && b2.isLocked) { + return 1; + } + if (a2.isPrimary && !b2.isPrimary) { + return -1; + } + if (!a2.isPrimary && b2.isPrimary) { + return 1; + } + return a2.name.localeCompare(b2.name); + }); + return filters; + }, [fields, view]); +} +var use_filters_default = useFilters; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); +function Filters({ className }) { + const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element30.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element30.useRef)(null); + const filters = use_filters_default(fields, view); + const addFilter = /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + add_filter_default, + { + filters, + view, + onChangeView, + ref: addFilterRef, + setOpenedFilter + }, + "add-filter" + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + if (visibleFilters.length === 0) { + return null; + } + const filterComponents = [ + ...visibleFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + Filter, + { + filter, + view, + fields, + onChangeView, + addFilterRef, + openedFilter + }, + filter.field + ); + }), + addFilter + ]; + filterComponents.push( + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ResetFilter, + { + filters, + view, + onChangeView + }, + "reset-filters" + ) + ); + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + gap: "sm", + style: { width: "fit-content" }, + wrap: "wrap", + className, + children: filterComponents + } + ); +} +var filters_default = (0, import_element30.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element31 = __toESM(require_element(), 1); +var import_components24 = __toESM(require_components(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +function FiltersToggle() { + const { + filters, + view, + onChangeView, + setOpenedFilter, + isShowingFilter, + setIsShowingFilter + } = (0, import_element31.useContext)(dataviews_context_default); + const buttonRef = (0, import_element31.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element31.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + const hasVisibleFilters = !!visibleFilters.length; + if (filters.length === 0) { + return null; + } + const addFilterButtonProps = { + label: (0, import_i18n27.__)("Add filter"), + "aria-expanded": false, + isPressed: false + }; + const toggleFiltersButtonProps = { + label: (0, import_i18n27._x)("Filter", "verb"), + "aria-expanded": isShowingFilter, + isPressed: isShowingFilter, + onClick: () => { + if (!isShowingFilter) { + setOpenedFilter(null); + } + setIsShowingFilter(!isShowingFilter); + } + }; + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + AddFilterMenu, + { + filters, + view, + onChangeView: onChangeViewWithFilterVisibility, + setOpenedFilter, + triggerProps: { render: buttonComponent } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + FilterVisibilityToggle, + { + buttonRef, + filtersCount: view.filters?.length, + children: buttonComponent + } + ) }); +} +function FilterVisibilityToggle({ + buttonRef, + filtersCount, + children +}) { + (0, import_element31.useEffect)( + () => () => { + buttonRef.current?.focus(); + }, + [buttonRef] + ); + return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [ + children, + !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) + ] }); +} +var toggle_default = FiltersToggle; + +// packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs +var import_element32 = __toESM(require_element(), 1); +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element32.useContext)(dataviews_context_default); + if (!isShowingFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(filters_default, { ...props }); +} +var filters_toggled_default = FiltersToggled; + +// packages/dataviews/build-module/components/dataviews-layout/index.mjs +var import_element33 = __toESM(require_element(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId3, + getItemLevel, + isLoading, + view, + onChangeView, + selection, + onChangeSelection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + defaultLayouts, + empty = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("p", { children: (0, import_i18n28.__)("No results") }) + } = (0, import_element33.useContext)(dataviews_context_default); + const ViewComponent = VIEW_LAYOUTS.find( + (v2) => v2.type === view.type && defaultLayouts[v2.type] + )?.component; + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + ViewComponent, + { + className, + actions, + data, + fields, + getItemId: getItemId3, + getItemLevel, + isLoading, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + renderItemLink, + isItemClickable, + view, + empty + } + ); +} + +// packages/dataviews/build-module/components/dataviews-footer/index.mjs +var import_element34 = __toESM(require_element(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +var EMPTY_ARRAY5 = []; +function DataViewsFooter() { + const { + view, + paginationInfo: { totalItems = 0, totalPages }, + data, + actions = EMPTY_ARRAY5 + } = (0, import_element34.useContext)(dataviews_context_default); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) { + return null; + } + return !!totalItems && /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: "dataviews-footer", + gap: "sm", + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(BulkActionsFooter, {}), + /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(dataviews_pagination_default, {}) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-search/index.mjs +var import_i18n29 = __toESM(require_i18n(), 1); +var import_element35 = __toESM(require_element(), 1); +var import_components25 = __toESM(require_components(), 1); +var import_compose10 = __toESM(require_compose(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +var DataViewsSearch = (0, import_element35.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element35.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element35.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element35.useRef)(onChangeView); + const viewRef = (0, import_element35.useRef)(view); + (0, import_element35.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element35.useEffect)(() => { + if (debouncedSearch !== viewRef.current?.search) { + onChangeViewRef.current({ + ...viewRef.current, + page: 1, + search: debouncedSearch + }); + } + }, [debouncedSearch]); + const searchLabel = label || (0, import_i18n29.__)("Search"); + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + import_components25.SearchControl, + { + className: "dataviews-search", + onChange: setSearch, + value: search, + label: searchLabel, + placeholder: searchLabel, + size: "compact" + } + ); +}); +var dataviews_search_default = DataViewsSearch; + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_components27 = __toESM(require_components(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_warning = __toESM(require_warning(), 1); +var import_compose11 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +var import_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element36.useContext)(dataviews_context_default); + const { view, onChangeView } = context; + const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; + if (!context.hasInfiniteScrollHandler) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + import_components26.ToggleControl, + { + label: (0, import_i18n30.__)("Enable infinite scroll"), + help: (0, import_i18n30.__)( + "Automatically load more content as you scroll, instead of showing pagination links." + ), + checked: infiniteScrollEnabled, + onChange: (newValue) => { + onChangeView({ + ...view, + infiniteScrollEnabled: newValue + }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu5 } = unlock(import_components27.privateApis); +var DATAVIEWS_CONFIG_POPOVER_PROPS = { + className: "dataviews-config__popover", + placement: "bottom-end", + offset: 9 +}; +function ViewTypeMenu() { + const { view, onChangeView, defaultLayouts } = (0, import_element37.useContext)(dataviews_context_default); + const availableLayouts = Object.keys(defaultLayouts); + if (availableLayouts.length <= 1) { + return null; + } + const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(Menu5, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + Menu5.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.Button, + { + size: "compact", + icon: activeView?.icon, + label: (0, import_i18n31.__)("Layout") + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Menu5.Popover, { children: availableLayouts.map((layout) => { + const config = VIEW_LAYOUTS.find( + (v2) => v2.type === layout + ); + if (!config) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + Menu5.RadioItem, + { + value: layout, + name: "view-actions-available-view", + checked: layout === view.type, + hideOnClick: true, + onChange: (e2) => { + switch (e2.target.value) { + case "list": + case "grid": + case "table": + case "pickerGrid": + case "pickerTable": + case "activity": + const viewWithoutLayout = { ...view }; + if ("layout" in viewWithoutLayout) { + delete viewWithoutLayout.layout; + } + return onChangeView({ + ...viewWithoutLayout, + type: e2.target.value, + ...defaultLayouts[e2.target.value] + }); + } + (0, import_warning.default)("Invalid dataview"); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Menu5.ItemLabel, { children: config.label }) + }, + layout + ); + }) }) + ] }); +} +function SortFieldControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const orderOptions = (0, import_element37.useMemo)(() => { + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + return sortableFields.map((field) => { + return { + label: field.label, + value: field.id + }; + }); + }, [fields]); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.SelectControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n31.__)("Sort by"), + value: view.sort?.field, + options: orderOptions, + onChange: (value) => { + onChangeView({ + ...view, + sort: { + direction: view?.sort?.direction || "desc", + field: value + }, + showLevels: false + }); + } + } + ); +} +function SortDirectionControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + if (sortableFields.length === 0) { + return null; + } + let value = view.sort?.direction; + if (!value && view.sort?.field) { + value = "desc"; + } + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalToggleGroupControl, + { + className: "dataviews-view-config__sort-direction", + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Order"), + value, + onChange: (newDirection) => { + if (newDirection === "asc" || newDirection === "desc") { + onChangeView({ + ...view, + sort: { + direction: newDirection, + field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. + fields.find( + (field) => field.enableSorting !== false + )?.id || "" + }, + showLevels: false + }); + return; + } + (0, import_warning.default)("Invalid direction"); + }, + children: SORTING_DIRECTIONS.map((direction) => { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalToggleGroupControlOptionIcon, + { + value: direction, + icon: sortIcons[direction], + label: sortLabels[direction] + }, + direction + ); + }) + } + ); +} +function ItemsPerPageControl() { + const { view, config, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const { infiniteScrollEnabled } = view; + if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalToggleGroupControl, + { + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Items per page"), + value: view.perPage || 10, + disabled: !view?.sort?.field, + onChange: (newItemsPerPage) => { + const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); + onChangeView({ + ...view, + perPage: newItemsPerPageNumber, + page: 1 + }); + }, + children: config.perPageSizes.map((value) => { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalToggleGroupControlOption, + { + value, + label: value.toString() + }, + value + ); + }) + } + ); +} +function SettingsSection({ + title, + description, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_components27.__experimentalGrid, { columns: 12, className: "dataviews-settings-section", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "dataviews-settings-section__sidebar", children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: title + } + ), + description && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalText, + { + variant: "muted", + className: "dataviews-settings-section__description", + children: description + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalGrid, + { + columns: 8, + gap: 4, + className: "dataviews-settings-section__content", + children + } + ) + ] }); +} +function DataviewsViewConfigDropdown() { + const { view } = (0, import_element37.useContext)(dataviews_context_default); + const popoverId = (0, import_compose11.useInstanceId)( + _DataViewsViewConfig, + "dataviews-view-config-dropdown" + ); + const activeLayout = VIEW_LAYOUTS.find( + (layout) => layout.type === view.type + ); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.Dropdown, + { + expandOnMobile: true, + popoverProps: { + ...DATAVIEWS_CONFIG_POPOVER_PROPS, + id: popoverId + }, + renderToggle: ({ onToggle, isOpen }) => { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.Button, + { + size: "compact", + icon: cog_default, + label: (0, import_i18n31._x)("View options", "View is used as a noun"), + onClick: onToggle, + "aria-expanded": isOpen ? "true" : "false", + "aria-controls": popoverId + } + ); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(SettingsSection, { title: (0, import_i18n31.__)("Appearance"), children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "is-divided-in-two", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SortFieldControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SortDirectionControl, {}) + ] + } + ), + !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(activeLayout.viewConfigOptions, {}), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(InfiniteScrollToggle, {}), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ItemsPerPageControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(PropertiesSection, {}) + ] }) + } + ) + } + ) + } + ); +} +function _DataViewsViewConfig() { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ViewTypeMenu, {}), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(DataviewsViewConfigDropdown, {}) + ] }); +} +var DataViewsViewConfig = (0, import_element37.memo)(_DataViewsViewConfig); +var dataviews_view_config_default = DataViewsViewConfig; + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_components28 = __toESM(require_components(), 1); +var import_element38 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs +function getCustomValidity(isValid2, validity) { + let customValidity; + if (isValid2?.required && validity?.required) { + customValidity = validity?.required?.message ? validity.required : void 0; + } else if (isValid2?.pattern && validity?.pattern) { + customValidity = validity.pattern; + } else if (isValid2?.min && validity?.min) { + customValidity = validity.min; + } else if (isValid2?.max && validity?.max) { + customValidity = validity.max; + } else if (isValid2?.minLength && validity?.minLength) { + customValidity = validity.minLength; + } else if (isValid2?.maxLength && validity?.maxLength) { + customValidity = validity.maxLength; + } else if (isValid2?.elements && validity?.elements) { + customValidity = validity.elements; + } else if (validity?.custom) { + customValidity = validity.custom; + } + return customValidity; +} + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +var { ValidatedCheckboxControl } = unlock(import_components28.privateApis); +function Checkbox({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, label, description, isValid: isValid2 } = field; + const onChangeControl = (0, import_element38.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [data, getValue, onChange, setValue]); + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + ValidatedCheckboxControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/combobox.mjs +var import_components29 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +var { ValidatedComboboxControl } = unlock(import_components29.privateApis); +function Combobox3({ + data, + field, + onChange, + hideLabelFromVision, + validity +}) { + const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element39.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_components29.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ValidatedComboboxControl, + { + required: !!field.isValid?.required, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + placeholder, + options: elements, + onChange: onChangeControl, + hideLabelFromVision, + allowReset: true, + expandOnFocus: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_components31 = __toESM(require_components(), 1); +var import_element41 = __toESM(require_element(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_date3 = __toESM(require_date(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs +var import_components30 = __toESM(require_components(), 1); +var import_element40 = __toESM(require_element(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +var TIME_UNITS_OPTIONS = { + [OPERATOR_IN_THE_PAST]: [ + { value: "days", label: (0, import_i18n32.__)("Days") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks") }, + { value: "months", label: (0, import_i18n32.__)("Months") }, + { value: "years", label: (0, import_i18n32.__)("Years") } + ], + [OPERATOR_OVER]: [ + { value: "days", label: (0, import_i18n32.__)("Days ago") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks ago") }, + { value: "months", label: (0, import_i18n32.__)("Months ago") }, + { value: "years", label: (0, import_i18n32.__)("Years ago") } + ] +}; +function RelativeDateControl({ + className, + data, + field, + onChange, + hideLabelFromVision, + operator +}) { + const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; + const { id, label, getValue, setValue } = field; + const fieldValue = getValue({ item: data }); + const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; + const onChangeValue = (0, import_element40.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element40.useCallback)( + (newUnit) => onChange( + setValue({ + item: data, + value: { value: relValue, unit: newUnit } + }) + ), + [onChange, setValue, data, relValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + import_components30.BaseControl, + { + id, + className: clsx_default(className, "dataviews-controls__relative-date"), + label, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(Stack, { direction: "row", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + import_components30.__experimentalNumberControl, + { + __next40pxDefaultSize: true, + className: "dataviews-controls__relative-date-number", + spinControls: "none", + min: 1, + step: 1, + value: relValue, + onChange: onChangeValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + import_components30.SelectControl, + { + className: "dataviews-controls__relative-date-unit", + __next40pxDefaultSize: true, + label: (0, import_i18n32.__)("Unit"), + value: unit, + options, + onChange: onChangeUnit, + hideLabelFromVision: true + } + ) + ] }) + } + ); +} + +// packages/dataviews/build-module/field-types/utils/parse-date-time.mjs +var import_date2 = __toESM(require_date(), 1); +function parseDateTime(dateTimeString) { + if (!dateTimeString) { + return null; + } + const parsed = (0, import_date2.getDate)(dateTimeString); + return parsed && isValid(parsed) ? parsed : null; +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar, ValidatedInputControl } = unlock(import_components31.privateApis); +var formatDateTime = (date) => { + if (!date) { + return ""; + } + if (typeof date === "string") { + return date; + } + return format(date, "yyyy-MM-dd'T'HH:mm"); +}; +function CalendarDateTimeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, description, setValue, getValue, isValid: isValid2 } = field; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element41.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element41.useRef)(null); + const validationTimeoutRef = (0, import_element41.useRef)(); + const previousFocusRef = (0, import_element41.useRef)(null); + const onChangeCallback = (0, import_element41.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element41.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element41.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + let finalDateTime = newDate; + if (value) { + const currentDateTime = parseDateTime(value); + if (currentDateTime) { + finalDateTime = new Date(newDate); + finalDateTime.setHours(currentDateTime.getHours()); + finalDateTime.setMinutes( + currentDateTime.getMinutes() + ); + } + } + dateTimeValue = finalDateTime.toISOString(); + onChangeCallback(dateTimeValue); + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + } else { + onChangeCallback(void 0); + } + previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; + validationTimeoutRef.current = setTimeout(() => { + if (inputControlRef.current) { + inputControlRef.current.focus(); + inputControlRef.current.blur(); + onChangeCallback(dateTimeValue); + if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { + previousFocusRef.current.focus(); + } + } + }, 0); + }, + [onChangeCallback, value] + ); + const handleManualDateTimeChange = (0, import_element41.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = new Date(newValue); + onChangeCallback(dateTime.toISOString()); + const parsedDate = parseDateTime(dateTime.toISOString()); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } else { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const { format: fieldFormat } = field; + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date3.getSettings)().l10n.startOfWeek; + const { + timezone: { string: timezoneString } + } = (0, import_date3.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + import_components31.BaseControl, + { + id, + label: displayLabel, + help: description, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + DateCalendar, + { + style: { width: "100%" }, + selected: value ? parseDateTime(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ), + /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ValidatedInputControl, + { + ref: inputControlRef, + __next40pxDefaultSize: true, + required: !!isValid2?.required, + customValidity: getCustomValidity(isValid2, validity), + type: "datetime-local", + label: (0, import_i18n33.__)("Date time"), + hideLabelFromVision: true, + value: value ? formatDateTime( + parseDateTime(value) || void 0 + ) : "", + onChange: handleManualDateTimeChange + } + ) + ] }) + } + ); +} +function DateTime({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__datetime", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + CalendarDateTimeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/date.mjs +var import_components32 = __toESM(require_components(), 1); +var import_element42 = __toESM(require_element(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); +var import_date4 = __toESM(require_date(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock(import_components32.privateApis); +var DATE_PRESETS = [ + { + id: "today", + label: (0, import_i18n34.__)("Today"), + getValue: () => (0, import_date4.getDate)(null) + }, + { + id: "yesterday", + label: (0, import_i18n34.__)("Yesterday"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 1); + } + }, + { + id: "past-week", + label: (0, import_i18n34.__)("Past week"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 7); + } + }, + { + id: "past-month", + label: (0, import_i18n34.__)("Past month"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subMonths(today, 1); + } + } +]; +var DATE_RANGE_PRESETS = [ + { + id: "last-7-days", + label: (0, import_i18n34.__)("Last 7 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 7), today]; + } + }, + { + id: "last-30-days", + label: (0, import_i18n34.__)("Last 30 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 30), today]; + } + }, + { + id: "month-to-date", + label: (0, import_i18n34.__)("Month to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfMonth(today), today]; + } + }, + { + id: "last-year", + label: (0, import_i18n34.__)("Last year"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subYears(today, 1), today]; + } + }, + { + id: "year-to-date", + label: (0, import_i18n34.__)("Year to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfYear(today), today]; + } + } +]; +var parseDate = (dateString) => { + if (!dateString) { + return null; + } + const parsed = (0, import_date4.getDate)(dateString); + return parsed && isValid(parsed) ? parsed : null; +}; +var formatDate = (date) => { + if (!date) { + return ""; + } + return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); +}; +function ValidatedDateControl({ + field, + validity, + inputRefs, + isTouched, + setIsTouched, + children +}) { + const { isValid: isValid2 } = field; + const [customValidity, setCustomValidity] = (0, import_element42.useState)(void 0); + const validateRefs = (0, import_element42.useCallback)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + for (const ref of refs) { + const input = ref.current; + if (input && !input.validity.valid) { + setCustomValidity({ + type: "invalid", + message: input.validationMessage + }); + return; + } + } + setCustomValidity(void 0); + }, [inputRefs]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + for (const ref of refs) { + const input = ref.current; + if (input) { + input.setCustomValidity( + result?.type === "invalid" && result.message ? result.message : "" + ); + } + } + }, [inputRefs, isValid2, validity]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const handleInvalid = (event) => { + event.preventDefault(); + setIsTouched(true); + }; + for (const ref of refs) { + ref.current?.addEventListener("invalid", handleInvalid); + } + return () => { + for (const ref of refs) { + ref.current?.removeEventListener("invalid", handleInvalid); + } + }; + }, [inputRefs, setIsTouched]); + (0, import_element42.useEffect)(() => { + if (!isTouched) { + return; + } + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + if (result) { + setCustomValidity(result); + } else { + validateRefs(); + } + }, [isTouched, isValid2, validity, validateRefs]); + const onBlur = (event) => { + if (isTouched) { + return; + } + if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { + setIsTouched(true); + } + }; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { onBlur, children: [ + children, + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( + "p", + { + className: clsx_default( + "components-validated-control__indicator", + customValidity.type === "invalid" ? "is-invalid" : void 0 + ), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.Icon, + { + className: "components-validated-control__indicator-icon", + icon: error_default, + size: 16, + fill: "currentColor" + } + ), + customValidity.message + ] + } + ) }) + ] }); +} +function CalendarDateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { + id, + label, + setValue, + getValue, + isValid: isValid2, + format: fieldFormat + } = field; + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const validityTargetRef = (0, import_element42.useRef)(null); + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element42.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (newValue) => { + onChangeCallback(newValue); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const { + timezone: { string: timezoneString } + } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: validityTargetRef, + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + disabled: !!selectedPresetId, + accessibleWhenDisabled: false, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: validityTargetRef, + type: "date", + label: (0, import_i18n34.__)("Date"), + hideLabelFromVision: true, + value, + onChange: handleManualDateChange, + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + DateCalendar2, + { + style: { width: "100%" }, + selected: value ? parseDate(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function CalendarDateRangeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, getValue, setValue, format: fieldFormat } = field; + let value; + const fieldValue = getValue({ item: data }); + if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { + value = fieldValue; + } + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const selectedRange = (0, import_element42.useMemo)(() => { + if (!value) { + return { from: void 0, to: void 0 }; + } + const [from, to] = value; + return { + from: parseDate(from) || void 0, + to: parseDate(to) || void 0 + }; + }, [value]); + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const fromInputRef = (0, import_element42.useRef)(null); + const toInputRef = (0, import_element42.useRef)(null); + const updateDateRange = (0, import_element42.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element42.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (fromOrTo, newValue) => { + const [currentFrom, currentTo] = value || [ + void 0, + void 0 + ]; + const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; + const updatedTo = fromOrTo === "to" ? newValue : currentTo; + updateDateRange(updatedFrom, updatedTo); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [value, updateDateRange] + ); + const { timezone } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (field.isValid?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!field.isValid?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: [fromInputRef, toInputRef], + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_RANGE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + accessibleWhenDisabled: false, + disabled: !!selectedPresetId, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "space-between", + className: "dataviews-controls__date-range-inputs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: fromInputRef, + type: "date", + label: (0, import_i18n34.__)("From"), + hideLabelFromVision: true, + value: value?.[0], + onChange: (newValue) => handleManualDateChange("from", newValue), + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: toInputRef, + type: "date", + label: (0, import_i18n34.__)("To"), + hideLabelFromVision: true, + value: value?.[1], + onChange: (newValue) => handleManualDateChange("to", newValue), + required: !!field.isValid?.required + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + DateRangeCalendar, + { + style: { width: "100%" }, + selected: selectedRange, + onSelect: onSelectCalendarRange, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezone.string || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function DateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__date", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + if (operator === OPERATOR_BETWEEN) { + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + CalendarDateRangeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + CalendarDateControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components34 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element43 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components33.privateApis); +function ValidatedText({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + type, + prefix, + suffix, + validity +}) { + const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element43.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + ValidatedInputControl2, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + hideLabelFromVision, + type, + prefix, + suffix, + pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_components34.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_components34.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components35 = __toESM(require_components(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_components35.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components36.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components37 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components37.privateApis); +function toNumberOrEmpty(value) { + if (value === "" || value === void 0) { + return ""; + } + const number = Number(value); + return Number.isFinite(number) ? number : ""; +} +function BetweenControls({ + value, + onChange, + hideLabelFromVision, + step +}) { + const [min = "", max = ""] = value; + const onChangeMin = (0, import_element44.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element44.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components37.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_components37.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Min."), + value: min, + max: max ? Number(max) - step : void 0, + onChange: onChangeMin, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Max."), + value: max, + min: min ? Number(min) + step : void 0, + onChange: onChangeMax, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ) + ] }) + } + ); +} +function ValidatedNumber({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + const decimals = field.format?.decimals ?? 0; + const step = Math.pow(10, Math.abs(decimals) * -1); + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + // Do not convert an empty string or undefined to a number, + // otherwise there's a mismatch between the UI control (empty) + // and the data relied by onChange (0). + value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) + }) + ); + }, + [data, onChange, setValue] + ); + const onChangeBetweenControls = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + if (operator === OPERATOR_BETWEEN) { + let valueBetween = ["", ""]; + if (Array.isArray(value) && value.length === 2 && value.every( + (element) => typeof element === "number" || element === "" + )) { + valueBetween = value; + } + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + ValidatedNumberControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + value, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + step, + min: isValid2.min ? isValid2.min.constraint : void 0, + max: isValid2.max ? isValid2.max.constraint : void 0 + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/integer.mjs +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components38.privateApis); +function Radio({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = getValue({ item: data }); + const onChangeControl = (0, import_element45.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_components38.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + ValidatedRadioControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + onChange: onChangeControl, + options: elements, + selected: value, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/select.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components39.privateApis); +function Select({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { type, label, description, getValue, setValue, isValid: isValid2 } = field; + const isMultiple = type === "array"; + const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); + const onChangeControl = (0, import_element46.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + ValidatedSelectControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + options: elements, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + multiple: isMultiple + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/text.mjs +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); +function Text2({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + prefix: prefix ? (0, import_element47.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element47.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleControl } = unlock(import_components40.privateApis); +function Toggle({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const onChangeControl = (0, import_element48.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + ValidatedToggleControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/textarea.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); +var { ValidatedTextareaControl } = unlock(import_components41.privateApis); +function Textarea({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { rows = 4 } = config || {}; + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }); + const onChangeControl = (0, import_element49.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + ValidatedTextareaControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + rows, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleGroupControl } = unlock(import_components42.privateApis); +function ToggleGroup({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + ValidatedToggleGroupControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + __next40pxDefaultSize: true, + isBlock: true, + label: field.label, + help: selectedOption?.description || field.description, + onChange: onChangeControl, + value, + hideLabelFromVision, + children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components42.__experimentalToggleGroupControlOption, + { + label: el.label, + value: el.value + }, + el.value + )) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/array.mjs +var import_components43 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1); +var { ValidatedFormTokenField } = unlock(import_components43.privateApis); +function ArrayControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const arrayValueAsElements = (0, import_element51.useMemo)( + () => Array.isArray(value) ? value.map((token) => { + const element = elements?.find( + (suggestion) => suggestion.value === token + ); + return element || { value: token, label: token }; + }) : [], + [value, elements] + ); + const onChangeControl = (0, import_element51.useCallback)( + (tokens) => { + const valueTokens = tokens.map((token) => { + if (typeof token === "object" && "value" in token) { + return token.value; + } + return token; + }); + onChange(setValue({ item: data, value: valueTokens })); + }, + [onChange, setValue, data] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + ValidatedFormTokenField, + { + required: !!isValid2?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label: hideLabelFromVision ? void 0 : label, + value: arrayValueAsElements, + onChange: onChangeControl, + placeholder, + suggestions: elements?.map((element) => element.value), + __experimentalValidateInput: (token) => { + if (field.isValid?.elements && elements) { + return elements.some( + (element) => element.value === token || element.label === token + ); + } + return true; + }, + __experimentalExpandOnFocus: elements && elements.length > 0, + __experimentalShowHowTo: !field.isValid?.elements, + displayTransform: (token) => { + if (typeof token === "object" && "label" in token) { + return token.label; + } + if (typeof token === "string" && elements) { + const element = elements.find( + (el) => el.value === token + ); + return element?.label || token; + } + return token; + }, + __experimentalRenderItem: ({ item }) => { + if (typeof item === "string" && elements) { + const element = elements.find( + (el) => el.value === item + ); + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { children: item }); + } + } + ); +} + +// node_modules/colord/index.mjs +var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; +var t = function(r3) { + return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; +}; +var n = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; +}; +var e = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; +}; +var u = function(r3) { + return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; +}; +var a = function(r3) { + return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; +}; +var o = function(r3) { + return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; +}; +var i = /^#([0-9a-f]{3,8})$/i; +var s = function(r3) { + var t2 = r3.toString(16); + return t2.length < 2 ? "0" + t2 : t2; +}; +var h = function(r3) { + var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0; + return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; +}; +var b = function(r3) { + var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6; + return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 }; +}; +var g = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; +}; +var d = function(r3) { + return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; +}; +var f = function(r3) { + return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; +}; +var c = function(r3) { + return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; +}; +var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var y = { string: [[function(r3) { + var t2 = i.exec(r3); + return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; +}, "hex"], [function(r3) { + var t2 = v.exec(r3) || m.exec(r3); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; +}, "rgb"], [function(t2) { + var n2 = l.exec(t2) || p.exec(t2); + if (!n2) return null; + var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(a2); +}, "hsl"]], object: [[function(r3) { + var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2; + return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; +}, "rgb"], [function(r3) { + var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2; + if (!t(n2) || !t(e2) || !t(u2)) return null; + var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) }); + return f(i2); +}, "hsl"], [function(r3) { + var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; + if (!t(n2) || !t(a2) || !t(o2)) return null; + var h2 = (function(r4) { + return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; + })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) }); + return b(h2); +}, "hsv"]] }; +var N = function(r3, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r3); + if (e2) return [e2, t2[n2][1]]; + } + return [null, void 0]; +}; +var x = function(r3) { + return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; +}; +var M = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; +}; +var H = function(r3) { + return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; +}; +var $ = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; +}; +var j = (function() { + function r3(r4) { + this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r3.prototype.isValid = function() { + return null !== this.parsed; + }, r3.prototype.brightness = function() { + return n(H(this.rgba), 2); + }, r3.prototype.isDark = function() { + return H(this.rgba) < 0.5; + }, r3.prototype.isLight = function() { + return H(this.rgba) >= 0.5; + }, r3.prototype.toHex = function() { + return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2; + var r4, t2, e2, u2, a2, i2; + }, r3.prototype.toRgb = function() { + return o(this.rgba); + }, r3.prototype.toRgbString = function() { + return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsl = function() { + return d(c(this.rgba)); + }, r3.prototype.toHslString = function() { + return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsv = function() { + return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; + var r4; + }, r3.prototype.invert = function() { + return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); + var r4; + }, r3.prototype.saturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); + }, r3.prototype.desaturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); + }, r3.prototype.grayscale = function() { + return w(M(this.rgba, -1)); + }, r3.prototype.lighten = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); + }, r3.prototype.darken = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); + }, r3.prototype.rotate = function(r4) { + return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); + }, r3.prototype.alpha = function(r4) { + return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3); + var t2; + }, r3.prototype.hue = function(r4) { + var t2 = c(this.rgba); + return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r3.prototype.isEqual = function(r4) { + return this.toHex() === w(r4).toHex(); + }, r3; +})(); +var w = function(r3) { + return r3 instanceof j ? r3 : new j(r3); +}; + +// packages/dataviews/build-module/components/dataform-controls/color.mjs +var import_components44 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3, Picker } = unlock(import_components44.privateApis); +var ColorPicker = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + import_components44.Dropdown, + { + renderToggle: ({ onToggle, isOpen }) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + "button", + { + type: "button", + onClick: onToggle, + style: { + width: "24px", + height: "24px", + borderRadius: "50%", + backgroundColor: validColor, + border: "1px solid #ddd", + cursor: "pointer", + outline: isOpen ? "2px solid #007cba" : "none", + outlineOffset: "2px", + display: "flex", + alignItems: "center", + justifyContent: "center", + padding: 0, + margin: 0 + }, + "aria-label": "Open color picker" + } + ) }), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { style: { padding: "16px" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + Picker, + { + color: w(validColor), + onChange: onColorChange, + enableAlpha: true + } + ) }) + } + ); +}; +function Color({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }) || ""; + const handleColorChange = (0, import_element52.useCallback)( + (colorObject) => { + onChange(setValue({ item: data, value: colorObject.toHex() })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element52.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + ValidatedInputControl3, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value, + help: description, + onChange: handleInputChange, + hideLabelFromVision, + type: "text", + prefix: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + ColorPicker, + { + color: value, + onColorChange: handleColorChange + } + ) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1); +function Password({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const [isVisible2, setIsVisible] = (0, import_element53.useState)(false); + const toggleVisibility = (0, import_element53.useCallback)(() => { + setIsVisible((prev) => !prev); + }, []); + return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n36.__)("Hide password") : (0, import_i18n36.__)("Show password") + } + ) }) + } + } + ); +} + +// packages/dataviews/build-module/field-types/utils/has-elements.mjs +function hasElements(field) { + return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; +} + +// packages/dataviews/build-module/components/dataform-controls/index.mjs +var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + array: ArrayControl, + checkbox: Checkbox, + color: Color, + combobox: Combobox3, + datetime: DateTime, + date: DateControl, + email: Email, + telephone: Telephone, + url: Url, + integer: Integer, + number: Number2, + password: Password, + radio: Radio, + select: Select, + text: Text2, + toggle: Toggle, + textarea: Textarea, + toggleGroup: ToggleGroup +}; +function isEditConfig(value) { + return value && typeof value === "object" && typeof value.control === "string"; +} +function createConfiguredControl(config) { + const { control, ...controlConfig } = config; + const BaseControlType = getControlByType(control); + if (BaseControlType === null) { + return null; + } + return function ConfiguredControl(props) { + return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(BaseControlType, { ...props, config: controlConfig }); + }; +} +function getControl(field, fallback) { + if (typeof field.Edit === "function") { + return field.Edit; + } + if (typeof field.Edit === "string") { + return getControlByType(field.Edit); + } + if (isEditConfig(field.Edit)) { + return createConfiguredControl(field.Edit); + } + if (hasElements(field) && field.type !== "array") { + return getControlByType("select"); + } + if (fallback === null) { + return null; + } + return getControlByType(fallback); +} +function getControlByType(type) { + if (Object.keys(FORM_CONTROLS).includes(type)) { + return FORM_CONTROLS[type]; + } + return null; +} + +// packages/dataviews/build-module/field-types/utils/get-filter-by.mjs +function getFilterBy(field, defaultOperators, validOperators) { + if (field.filterBy === false) { + return false; + } + const operators = field.filterBy?.operators?.filter( + (op) => validOperators.includes(op) + ) ?? defaultOperators; + if (operators.length === 0) { + return false; + } + return { + isPrimary: !!field.filterBy?.isPrimary, + operators + }; +} +var get_filter_by_default = getFilterBy; + +// packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs +var getValueFromId = (id) => ({ item }) => { + const path = id.split("."); + let value = item; + for (const segment of path) { + if (value.hasOwnProperty(segment)) { + value = value[segment]; + } else { + value = void 0; + } + } + return value; +}; +var get_value_from_id_default = getValueFromId; + +// packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs +var setValueFromId = (id) => ({ value }) => { + const path = id.split("."); + const result = {}; + let current = result; + for (const segment of path.slice(0, -1)) { + current[segment] = {}; + current = current[segment]; + } + current[path.at(-1)] = value; + return result; +}; +var set_value_from_id_default = setValueFromId; + +// packages/dataviews/build-module/field-types/email.mjs +var import_i18n37 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/render-from-elements.mjs +function RenderFromElements({ + item, + field +}) { + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = field.getValue({ item }); + if (isLoading) { + return value; + } + if (elements.length === 0) { + return value; + } + return elements?.find((element) => element.value === value)?.label || field.getValue({ item }); +} + +// packages/dataviews/build-module/field-types/utils/render-default.mjs +var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(RenderFromElements, { item, field }); + } + return field.getValueFormatted({ item, field }); +} + +// packages/dataviews/build-module/field-types/utils/sort-text.mjs +var sort_text_default = (a2, b2, direction) => { + return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-required.mjs +function isValidRequired(item, field) { + const value = field.getValue({ item }); + return ![void 0, "", null].includes(value); +} + +// packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs +function isValidMinLength(item, field) { + if (typeof field.isValid.minLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length >= field.isValid.minLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs +function isValidMaxLength(item, field) { + if (typeof field.isValid.maxLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length <= field.isValid.maxLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs +function isValidPattern(item, field) { + if (field.isValid.pattern?.constraint === void 0) { + return true; + } + try { + const regexp = new RegExp(field.isValid.pattern.constraint); + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return regexp.test(String(value)); + } catch { + return false; + } +} + +// packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs +function isValidElements(item, field) { + const elements = field.elements ?? []; + const validValues = elements.map((el) => el.value); + if (validValues.length === 0) { + return true; + } + const value = field.getValue({ item }); + return [].concat(value).every((v2) => validValues.includes(v2)); +} + +// packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs +function getValueFormatted({ + item, + field +}) { + return field.getValue({ item }); +} +var get_value_formatted_default_default = getValueFormatted; + +// packages/dataviews/build-module/field-types/email.mjs +var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +function isValidCustom(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { + return (0, import_i18n37.__)("Value must be a valid email address."); + } + return null; +} +var email_default = { + type: "email", + render, + Edit: "email", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements, + custom: isValidCustom + } +}; + +// packages/dataviews/build-module/field-types/integer.mjs +var import_i18n38 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/sort-number.mjs +var sort_number_default = (a2, b2, direction) => { + return direction === "asc" ? a2 - b2 : b2 - a2; +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-min.mjs +function isValidMin(item, field) { + if (typeof field.isValid.min?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) >= field.isValid.min.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max.mjs +function isValidMax(item, field) { + if (typeof field.isValid.max?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) <= field.isValid.max.constraint; +} + +// packages/dataviews/build-module/field-types/integer.mjs +var format2 = { + separatorThousand: "," +}; +function getValueFormatted2({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatInteger; + if (field.type !== "integer") { + formatInteger = format2; + } else { + formatInteger = field.format; + } + const { separatorThousand } = formatInteger; + const integerValue = Math.trunc(value); + if (!separatorThousand) { + return String(integerValue); + } + return String(integerValue).replace( + /\B(?=(\d{3})+(?!\d))/g, + separatorThousand + ); +} +function isValidCustom2(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { + return (0, import_i18n38.__)("Value must be an integer."); + } + return null; +} +var integer_default = { + type: "integer", + render, + Edit: "integer", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format2, + getValueFormatted: getValueFormatted2, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom2 + } +}; + +// packages/dataviews/build-module/field-types/number.mjs +var import_i18n39 = __toESM(require_i18n(), 1); +var format3 = { + separatorThousand: ",", + separatorDecimal: ".", + decimals: 2 +}; +function getValueFormatted3({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatNumber; + if (field.type !== "number") { + formatNumber = format3; + } else { + formatNumber = field.format; + } + const { separatorThousand, separatorDecimal, decimals } = formatNumber; + const fixedValue = value.toFixed(decimals); + const [integerPart, decimalPart] = fixedValue.split("."); + const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; + return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; +} +function isEmpty2(value) { + return value === "" || value === void 0 || value === null; +} +function isValidCustom3(item, field) { + const value = field.getValue({ item }); + if (!isEmpty2(value) && !Number.isFinite(value)) { + return (0, import_i18n39.__)("Value must be a number."); + } + return null; +} +var number_default = { + type: "number", + render, + Edit: "number", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format3, + getValueFormatted: getValueFormatted3, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom3 + } +}; + +// packages/dataviews/build-module/field-types/text.mjs +var text_default = { + type: "text", + render, + Edit: "text", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + // Single selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/datetime.mjs +var import_date6 = __toESM(require_date(), 1); +var format4 = { + datetime: (0, import_date6.getSettings)().formats.datetime, + weekStartsOn: (0, import_date6.getSettings)().l10n.startOfWeek +}; +function getValueFormatted4({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDatetime; + if (field.type !== "datetime") { + formatDatetime = format4; + } else { + formatDatetime = field.format; + } + return (0, import_date6.dateI18n)(formatDatetime.datetime, (0, import_date6.getDate)(value)); +} +var sort = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var datetime_default = { + type: "datetime", + render, + Edit: "datetime", + sort, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + format: format4, + getValueFormatted: getValueFormatted4, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/date.mjs +var import_date7 = __toESM(require_date(), 1); +var format5 = { + date: (0, import_date7.getSettings)().formats.date, + weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek +}; +function getValueFormatted5({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDate2; + if (field.type !== "date") { + formatDate2 = format5; + } else { + formatDate2 = field.format; + } + return (0, import_date7.dateI18n)(formatDate2.date, (0, import_date7.getDate)(value)); +} +var sort2 = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var date_default = { + type: "date", + render, + Edit: "date", + sort: sort2, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + format: format5, + getValueFormatted: getValueFormatted5, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/boolean.mjs +var import_i18n40 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs +function isValidRequiredForBool(item, field) { + const value = field.getValue({ item }); + return value === true; +} + +// packages/dataviews/build-module/field-types/boolean.mjs +function getValueFormatted6({ + item, + field +}) { + const value = field.getValue({ item }); + if (value === true) { + return (0, import_i18n40.__)("True"); + } + if (value === false) { + return (0, import_i18n40.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n40.__)("Value must be true, false, or undefined"); + } + return null; +} +var sort3 = (a2, b2, direction) => { + const boolA = Boolean(a2); + const boolB = Boolean(b2); + if (boolA === boolB) { + return 0; + } + if (direction === "asc") { + return boolA ? 1 : -1; + } + return boolA ? -1 : 1; +}; +var boolean_default = { + type: "boolean", + render, + Edit: "checkbox", + sort: sort3, + validate: { + required: isValidRequiredForBool, + elements: isValidElements, + custom: isValidCustom4 + }, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + format: {}, + getValueFormatted: getValueFormatted6 +}; + +// packages/dataviews/build-module/field-types/media.mjs +var media_default2 = { + type: "media", + render: () => null, + Edit: null, + sort: () => 0, + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: get_value_formatted_default_default, + // cannot validate any constraint, so + // the only available validation for the field author + // would be providing a custom validator. + validate: {} +}; + +// packages/dataviews/build-module/field-types/array.mjs +var import_i18n41 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs +function isValidRequiredForArray(item, field) { + const value = field.getValue({ item }); + return Array.isArray(value) && value.length > 0 && value.every( + (element) => ![void 0, "", null].includes(element) + ); +} + +// packages/dataviews/build-module/field-types/array.mjs +function getValueFormatted7({ + item, + field +}) { + const value = field.getValue({ item }); + const arr = Array.isArray(value) ? value : []; + return arr.join(", "); +} +function render2({ item, field }) { + return getValueFormatted7({ item, field }); +} +function isValidCustom5(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Array.isArray(value)) { + return (0, import_i18n41.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n41.__)("Every value must be a string."); + } + return null; +} +var sort4 = (a2, b2, direction) => { + const arrA = Array.isArray(a2) ? a2 : []; + const arrB = Array.isArray(b2) ? b2 : []; + if (arrA.length !== arrB.length) { + return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; + } + const joinedA = arrA.join(","); + const joinedB = arrB.join(","); + return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); +}; +var array_default = { + type: "array", + render: render2, + Edit: "array", + sort: sort4, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: getValueFormatted7, + validate: { + required: isValidRequiredForArray, + elements: isValidElements, + custom: isValidCustom5 + } +}; + +// packages/dataviews/build-module/field-types/password.mjs +function getValueFormatted8({ + item, + field +}) { + return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; +} +var password_default = { + type: "password", + render, + Edit: "password", + sort: () => 0, + // Passwords should not be sortable for security reasons + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: getValueFormatted8, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/telephone.mjs +var telephone_default = { + type: "telephone", + render, + Edit: "telephone", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/color.mjs +var import_i18n42 = __toESM(require_i18n(), 1); +var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RenderFromElements, { item, field }); + } + const value = get_value_formatted_default_default({ item, field }); + if (!value || !w(value).isValid()) { + return value; + } + return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime107.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { children: value }) + ] }); +} +function isValidCustom6(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !w(value).isValid()) { + return (0, import_i18n42.__)("Value must be a valid color."); + } + return null; +} +var sort5 = (a2, b2, direction) => { + const colorA = w(a2); + const colorB = w(b2); + if (!colorA.isValid() && !colorB.isValid()) { + return 0; + } + if (!colorA.isValid()) { + return direction === "asc" ? 1 : -1; + } + if (!colorB.isValid()) { + return direction === "asc" ? -1 : 1; + } + const hslA = colorA.toHsl(); + const hslB = colorB.toHsl(); + if (hslA.h !== hslB.h) { + return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; + } + if (hslA.s !== hslB.s) { + return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; + } + return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; +}; +var color_default = { + type: "color", + render: render3, + Edit: "color", + sort: sort5, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_IS_ANY, + OPERATOR_IS_NONE + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements, + custom: isValidCustom6 + } +}; + +// packages/dataviews/build-module/field-types/url.mjs +var url_default = { + type: "url", + render, + Edit: "url", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/no-type.mjs +var sort6 = (a2, b2, direction) => { + if (typeof a2 === "number" && typeof b2 === "number") { + return sort_number_default(a2, b2, direction); + } + return sort_text_default(a2, b2, direction); +}; +var no_type_default = { + // type: no type for this one + render, + Edit: null, + sort: sort6, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: getAllOperatorNames(), + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/utils/get-is-valid.mjs +function getIsValid(field, fieldType) { + let required; + if (field.isValid?.required === true && fieldType.validate.required !== void 0) { + required = { + constraint: true, + validate: fieldType.validate.required + }; + } + let elements; + if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out + field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { + elements = { + constraint: true, + validate: fieldType.validate.elements + }; + } + let min; + if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { + min = { + constraint: field.isValid.min, + validate: fieldType.validate.min + }; + } + let max; + if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { + max = { + constraint: field.isValid.max, + validate: fieldType.validate.max + }; + } + let minLength; + if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { + minLength = { + constraint: field.isValid.minLength, + validate: fieldType.validate.minLength + }; + } + let maxLength; + if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { + maxLength = { + constraint: field.isValid.maxLength, + validate: fieldType.validate.maxLength + }; + } + let pattern; + if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { + pattern = { + constraint: field.isValid?.pattern, + validate: fieldType.validate.pattern + }; + } + const custom = field.isValid?.custom ?? fieldType.validate.custom; + return { + required, + elements, + min, + max, + minLength, + maxLength, + pattern, + custom + }; +} + +// packages/dataviews/build-module/field-types/utils/get-filter.mjs +function getFilter(fieldType) { + return fieldType.validOperators.reduce((accumulator, operator) => { + const operatorObj = getOperatorByName(operator); + if (operatorObj?.filter) { + accumulator[operator] = operatorObj.filter; + } + return accumulator; + }, {}); +} + +// packages/dataviews/build-module/field-types/utils/get-format.mjs +function getFormat(field, fieldType) { + return { + ...fieldType.format, + ...field.format + }; +} +var get_format_default = getFormat; + +// packages/dataviews/build-module/field-types/index.mjs +function getFieldTypeByName(type) { + const found = [ + email_default, + integer_default, + number_default, + text_default, + datetime_default, + date_default, + boolean_default, + media_default2, + array_default, + password_default, + telephone_default, + color_default, + url_default + ].find((fieldType) => fieldType?.type === type); + if (!!found) { + return found; + } + return no_type_default; +} +function normalizeFields(fields) { + return fields.map((field) => { + const fieldType = getFieldTypeByName(field.type); + const getValue = field.getValue || get_value_from_id_default(field.id); + const sort7 = function(a2, b2, direction) { + const aValue = getValue({ item: a2 }); + const bValue = getValue({ item: b2 }); + return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); + }; + return { + id: field.id, + label: field.label || field.id, + header: field.header || field.label || field.id, + description: field.description, + placeholder: field.placeholder, + getValue, + setValue: field.setValue || set_value_from_id_default(field.id), + elements: field.elements, + getElements: field.getElements, + hasElements: hasElements(field), + isVisible: field.isVisible, + enableHiding: field.enableHiding ?? true, + readOnly: field.readOnly ?? false, + // The type provides defaults for the following props + type: fieldType.type, + render: field.render ?? fieldType.render, + Edit: getControl(field, fieldType.Edit), + sort: sort7, + enableSorting: field.enableSorting ?? fieldType.enableSorting, + enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, + isValid: getIsValid(field, fieldType), + filterBy: get_filter_by_default( + field, + fieldType.defaultOperators, + fieldType.validOperators + ), + filter: getFilter(fieldType), + format: get_format_default(field, fieldType), + getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted + }; + }); +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1); +var defaultGetItemId = (item) => item.id; +var defaultIsItemClickable = () => true; +var EMPTY_ARRAY6 = []; +var dataViewsLayouts = VIEW_LAYOUTS.filter( + (viewLayout) => !viewLayout.isPicker +); +function DefaultUI({ + header, + search = true, + searchLabel = void 0 +}) { + return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_jsx_runtime108.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DataViewsFooter, {}) + ] }); +} +function DataViews({ + view, + onChangeView, + fields, + search = true, + searchLabel = void 0, + actions = EMPTY_ARRAY6, + data, + getItemId: getItemId3 = defaultGetItemId, + getItemLevel, + isLoading = false, + paginationInfo, + defaultLayouts: defaultLayoutsProperty, + selection: selectionProperty, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable = defaultIsItemClickable, + header, + children, + config = { perPageSizes: [10, 20, 50, 100] }, + empty +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element54.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element54.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element54.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element54.useState)(null); + function setSelectionWithChange(value) { + const newValue = typeof value === "function" ? value(selection) : value; + if (isUncontrolled) { + setSelectionState(newValue); + } + if (onChangeSelection) { + onChangeSelection(newValue); + } + } + const _fields = (0, import_element54.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element54.useMemo)(() => { + return selection.filter( + (id) => data.some((item) => getItemId3(item) === id) + ); + }, [selection, data, getItemId3]); + const filters = use_filters_default(_fields, view); + const hasPrimaryOrLockedFilters = (0, import_element54.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element54.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element54.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element54.useEffect)(() => { + if (!view.infiniteScrollEnabled || !containerRef.current) { + return; + } + const handleScroll = (0, import_compose12.throttle)((event) => { + const target = event.target; + const scrollTop = target.scrollTop; + const scrollHeight = target.scrollHeight; + const clientHeight = target.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 100) { + infiniteScrollHandler?.(); + } + }, 100); + const container = containerRef.current; + container.addEventListener("scroll", handleScroll); + return () => { + container.removeEventListener("scroll", handleScroll); + handleScroll.cancel(); + }; + }, [infiniteScrollHandler, view.infiniteScrollEnabled]); + const defaultLayouts = (0, import_element54.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data, + isLoading, + paginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId3, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInfiniteScrollHandler: !!infiniteScrollHandler + }, + children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + DefaultUI, + { + header, + search, + searchLabel + } + ) }) + } + ); +} +var DataViewsSubComponents = DataViews; +DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; +DataViewsSubComponents.Filters = filters_default; +DataViewsSubComponents.FiltersToggled = filters_toggled_default; +DataViewsSubComponents.FiltersToggle = toggle_default; +DataViewsSubComponents.Layout = DataViewsLayout; +DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; +DataViewsSubComponents.Pagination = DataViewsPagination; +DataViewsSubComponents.Search = dataviews_search_default; +DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; +DataViewsSubComponents.Footer = DataViewsFooter; +var dataviews_default = DataViewsSubComponents; + +// packages/dataviews/build-module/utils/filter-sort-and-paginate.mjs +var import_remove_accents2 = __toESM(require_remove_accents(), 1); +var import_deprecated = __toESM(require_deprecated(), 1); +function normalizeSearchInput2(input = "") { + return (0, import_remove_accents2.default)(input.trim().toLowerCase()); +} +var EMPTY_ARRAY7 = []; +function filterSortAndPaginate(data, view, fields) { + if (!data) { + return { + data: EMPTY_ARRAY7, + paginationInfo: { totalItems: 0, totalPages: 0 } + }; + } + const _fields = normalizeFields(fields); + let filteredData = [...data]; + if (view.search) { + const normalizedSearch = normalizeSearchInput2(view.search); + filteredData = filteredData.filter((item) => { + return _fields.filter((field) => field.enableGlobalSearch).some((field) => { + const fieldValue = field.getValue({ item }); + const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue]; + return values.some( + (value) => normalizeSearchInput2(String(value)).includes( + normalizedSearch + ) + ); + }); + }); + } + if (view.filters && view.filters?.length > 0) { + view.filters.forEach((filter) => { + const field = _fields.find( + (_field) => _field.id === filter.field + ); + if (field) { + if (filter.operator === OPERATOR_IS_NOT_ALL) { + (0, import_deprecated.default)("The 'isNotAll' filter operator", { + since: "7.0", + alternative: "'isNone'" + }); + } + const handler = field.filter[filter.operator]; + if (handler) { + filteredData = filteredData.filter( + (item) => handler(item, field, filter.value) + ); + } + } + }); + } + const sortByField = view.sort?.field ? _fields.find((field) => { + return field.enableSorting !== false && field.id === view.sort?.field; + }) : null; + const groupByField = view.groupBy?.field ? _fields.find((field) => { + return field.enableSorting !== false && field.id === view.groupBy?.field; + }) : null; + if (sortByField || groupByField) { + filteredData.sort((a2, b2) => { + if (groupByField) { + const groupCompare = groupByField.sort( + a2, + b2, + view.groupBy?.direction ?? "asc" + ); + if (groupCompare !== 0) { + return groupCompare; + } + } + if (sortByField) { + return sortByField.sort(a2, b2, view.sort?.direction ?? "desc"); + } + return 0; + }); + } + let totalItems = filteredData.length; + let totalPages = 1; + if (view.page !== void 0 && view.perPage !== void 0) { + const start = (view.page - 1) * view.perPage; + totalItems = filteredData?.length || 0; + totalPages = Math.ceil(totalItems / view.perPage); + filteredData = filteredData?.slice(start, start + view.perPage); + } + return { + data: filteredData, + paginationInfo: { + totalItems, + totalPages + } + }; +} + +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element55 = __toESM(require_element(), 1); +var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element55.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime109.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/header.mjs +var import_components47 = __toESM(require_components(), 1); + +// packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs +var import_components46 = __toESM(require_components(), 1); +var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components46.createSlotFill)("SidebarToggle"); + +// packages/admin-ui/build-module/page/header.mjs +var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + showSidebarToggle = true +}) { + const classes = clsx_default("admin-ui-page", className); + return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default2 = Page; + +// routes/template-list/stage-activation.tsx +var import_core_data9 = __toESM(require_core_data()); +var import_components53 = __toESM(require_components()); +var import_data13 = __toESM(require_data()); +var import_element63 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_i18n53 = __toESM(require_i18n()); + +// routes/lock-unlock.ts +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" +); + +// routes/template-list/view-utils.ts +var DEFAULT_VIEW = { + type: "grid", + perPage: 20, + sort: { + field: "title", + direction: "asc" + }, + fields: ["author", "active", "slug"], + titleField: "title", + descriptionField: "description", + mediaField: "preview", + filters: [] +}; +var DEFAULT_VIEW_LEGACY = { + ...DEFAULT_VIEW, + fields: ["author"] +}; +var DEFAULT_LAYOUTS = { + table: { + showMedia: false + }, + grid: { + showMedia: true + }, + list: { + showMedia: false + } +}; +function getActiveViewOverridesForTab(activeView) { + if (activeView === "user") { + return { + sort: { field: "date", direction: "desc" } + }; + } + if (activeView === "active") { + return {}; + } + return { + filters: [ + { + field: "author", + operator: "isAny", + value: [activeView] + } + ] + }; +} +function getActiveViewOverridesForTabLegacy(activeView) { + if (activeView === "all") { + return {}; + } + return { + filters: [ + { + field: "author", + operator: "isAny", + value: [activeView] + } + ] + }; +} + +// routes/template-list/fields/preview.tsx +var import_i18n43 = __toESM(require_i18n()); +import { Preview } from "@wordpress/lazy-editor"; +function PreviewField({ item }) { + const description = item.description; + return /* @__PURE__ */ React.createElement( + Preview, + { + content: item?.content?.raw, + blocks: item?.blocks, + description + } + ); +} +var previewField = { + label: (0, import_i18n43.__)("Preview"), + id: "preview", + render: PreviewField, + enableSorting: false +}; + +// routes/template-list/fields/author.tsx +var import_components48 = __toESM(require_components()); +var import_i18n44 = __toESM(require_i18n()); +var import_element56 = __toESM(require_element()); +var import_core_data = __toESM(require_core_data()); +var import_data8 = __toESM(require_data()); +function useAddedBy(type, id) { + const { author, authorText } = (0, import_data8.useSelect)( + (select2) => { + const { getUser, getEditedEntityRecord } = select2(import_core_data.store); + const _record = getEditedEntityRecord("postType", type, id); + return { + author: _record?.author ? getUser(_record.author) : null, + authorText: _record?.author_text + }; + }, + [type, id] + ); + return (0, import_element56.useMemo)(() => { + if (authorText) { + return { + text: authorText, + icon: "admin-plugins" + }; + } + if (author) { + return { + text: author.name, + icon: "admin-users", + imageUrl: author.avatar_urls?.[48] + }; + } + return { + text: (0, import_i18n44.__)("Unknown"), + icon: "admin-users" + }; + }, [author, authorText]); +} +function AuthorField({ item }) { + const [isImageLoaded, setIsImageLoaded] = (0, import_element56.useState)(false); + const { text, icon, imageUrl } = useAddedBy(item.type, item.id); + return /* @__PURE__ */ React.createElement(import_components48.__experimentalHStack, { alignment: "left", spacing: 0 }, imageUrl && /* @__PURE__ */ React.createElement( + "div", + { + className: clsx_default( + "routes-template-list-author-field__avatar", + { + "is-loaded": isImageLoaded + } + ) + }, + /* @__PURE__ */ React.createElement( + "img", + { + onLoad: () => setIsImageLoaded(true), + alt: "", + src: imageUrl + } + ) + ), !imageUrl && /* @__PURE__ */ React.createElement("div", { className: "routes-template-list-author-field__icon" }, /* @__PURE__ */ React.createElement(import_components48.Icon, { icon })), /* @__PURE__ */ React.createElement("span", { className: "routes-template-list-author-field__name" }, text)); +} +var authorField = { + label: (0, import_i18n44.__)("Author"), + id: "author", + getValue: ({ item }) => item.author_text ?? item.author, + render: AuthorField +}; + +// routes/template-list/fields/description.tsx +var import_i18n45 = __toESM(require_i18n()); +var import_html_entities = __toESM(require_html_entities()); +var import_core_data2 = __toESM(require_core_data()); +var { useEntityRecordsWithPermissions } = unlock2(import_core_data2.privateApis); +function useAllDefaultTemplateTypes() { + const { records: staticRecords } = useEntityRecordsWithPermissions( + "root", + "registeredTemplate" + ); + return staticRecords?.filter((record) => !record.is_custom).map((record) => { + return { + slug: record.slug, + title: record.title.rendered, + description: record.description + }; + }); +} +var descriptionField = { + label: (0, import_i18n45.__)("Description"), + id: "description", + render: function RenderDescription({ item }) { + const defaultTemplateTypes = useAllDefaultTemplateTypes(); + const defaultTemplateType = defaultTemplateTypes?.find( + (type) => type.slug === item.slug + ); + return item.description ? (0, import_html_entities.decodeEntities)(item.description) : defaultTemplateType?.description; + }, + enableSorting: false, + enableGlobalSearch: true +}; + +// routes/template-list/fields/active.tsx +var import_i18n46 = __toESM(require_i18n()); +var import_components49 = __toESM(require_components()); +var { Badge: Badge3 } = unlock2(import_components49.privateApis); +var activeField = { + label: (0, import_i18n46.__)("Status"), + id: "active", + type: "boolean", + getValue: ({ item }) => item._isActive, + render: function Render({ item }) { + const activeLabel = item._isCustom ? (0, import_i18n46._x)("Active when used", "template") : (0, import_i18n46._x)("Active", "template"); + const activeIntent = item._isCustom ? "info" : "success"; + const isActive = item._isActive; + return /* @__PURE__ */ React.createElement(Badge3, { intent: isActive ? activeIntent : "default" }, isActive ? activeLabel : (0, import_i18n46._x)("Inactive", "template")); + } +}; + +// routes/template-list/fields/slug.tsx +var import_i18n47 = __toESM(require_i18n()); +var import_core_data3 = __toESM(require_core_data()); +var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions2 } = unlock2(import_core_data3.privateApis); +function useAllDefaultTemplateTypes2() { + const { records: staticRecords } = useEntityRecordsWithPermissions2( + "root", + "registeredTemplate" + ); + return staticRecords?.filter((record) => !record.is_custom).map((record) => { + return { + slug: record.slug, + title: record.title.rendered, + description: record.description + }; + }); +} +var slugField = { + label: (0, import_i18n47.__)("Template Type"), + id: "slug", + getValue: ({ item }) => item.slug, + render: function Render2({ item }) { + const defaultTemplateTypes = useAllDefaultTemplateTypes2(); + const defaultTemplateType = defaultTemplateTypes?.find( + (type) => type.slug === item.slug + ); + return defaultTemplateType?.title || (0, import_i18n47._x)("Custom", "template type"); + } +}; + +// routes/template-list/use-templates.ts +var import_element57 = __toESM(require_element()); +var import_data9 = __toESM(require_data()); +var import_core_data4 = __toESM(require_core_data()); +var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions3 } = unlock2(import_core_data4.privateApis); +function useTemplates(activeView = "active") { + const { activeTemplatesOption, activeTheme, defaultTemplateTypes } = (0, import_data9.useSelect)((select2) => { + const { getEntityRecord, getCurrentTheme } = select2(import_core_data4.store); + return { + activeTemplatesOption: getEntityRecord("root", "site")?.active_templates, + activeTheme: getCurrentTheme(), + defaultTemplateTypes: select2(import_core_data4.store).getCurrentTheme()?.default_template_types + }; + }, []); + const { records: userRecords, isResolving: isLoadingUserRecords } = useEntityRecordsWithPermissions3("postType", "wp_template", { + per_page: -1, + combinedTemplates: false + }); + const { records: staticRecords, isResolving: isLoadingStaticData } = useEntityRecordsWithPermissions3("root", "registeredTemplate", { + per_page: -1 + }); + const activeTemplates = (0, import_element57.useMemo)(() => { + const _active = [...staticRecords]; + if (activeTemplatesOption) { + for (const activeSlug in activeTemplatesOption) { + const activeId = activeTemplatesOption[activeSlug]; + const template = userRecords.find( + (userRecord) => userRecord.id === activeId && userRecord.theme === activeTheme.stylesheet + ); + if (template) { + const index = _active.findIndex( + ({ slug }) => slug === template.slug + ); + if (index !== -1) { + _active[index] = template; + } else { + _active.push(template); + } + } + } + } + return _active; + }, [userRecords, staticRecords, activeTemplatesOption, activeTheme]); + const records = (0, import_element57.useMemo)(() => { + function isCustom(record) { + return record.is_custom ?? // For user templates it's custom if the is_wp_suggestion meta + // field is not set and the slug is not found in the default + // template types. + (!record.meta?.is_wp_suggestion && !defaultTemplateTypes.some( + (type) => type.slug === record.slug + )); + } + let _records; + if (activeView === "active") { + _records = activeTemplates.filter( + (record) => !isCustom(record) + ); + } else if (activeView === "user") { + _records = userRecords; + } else { + _records = staticRecords; + } + return _records.map((record) => ({ + ...record, + _isActive: activeTemplates.some( + (template) => template.id === record.id + ), + _isCustom: isCustom(record) + })); + }, [ + activeTemplates, + defaultTemplateTypes, + userRecords, + staticRecords, + activeView + ]); + return { + records, + isLoading: isLoadingUserRecords || isLoadingStaticData, + staticRecords, + userRecords, + activeTemplates + }; +} + +// routes/template-list/actions/set-active-template.tsx +var import_i18n48 = __toESM(require_i18n()); +var import_element58 = __toESM(require_element()); +var import_data10 = __toESM(require_data()); +var import_core_data5 = __toESM(require_core_data()); +function useSetActiveTemplateAction() { + const activeTheme = (0, import_data10.useSelect)( + (select2) => select2(import_core_data5.store).getCurrentTheme() + ); + const { getEntityRecord } = (0, import_data10.useSelect)(import_core_data5.store); + const { editEntityRecord, saveEditedEntityRecord } = (0, import_data10.useDispatch)(import_core_data5.store); + return (0, import_element58.useMemo)( + () => ({ + id: "set-active-template", + label(items) { + return items.some((item) => item._isActive) ? (0, import_i18n48.__)("Deactivate") : (0, import_i18n48.__)("Activate"); + }, + isPrimary: true, + icon: pencil_default, + isEligible(item) { + if (!activeTheme) { + return false; + } + if (item.theme !== activeTheme.stylesheet) { + return false; + } + if (typeof item.id !== "number") { + return item._isActive === false; + } + return true; + }, + async callback(items) { + const deactivate = items.some((item) => item._isActive); + const activeTemplates = { + ...(await getEntityRecord("root", "site"))?.active_templates ?? {} + }; + for (const item of items) { + if (deactivate) { + delete activeTemplates[item.slug]; + } else { + activeTemplates[item.slug] = item.id; + } + } + await editEntityRecord("root", "site", void 0, { + active_templates: activeTemplates + }); + await saveEditedEntityRecord("root", "site"); + } + }), + [ + editEntityRecord, + saveEditedEntityRecord, + getEntityRecord, + activeTheme + ] + ); +} + +// routes/template-list/add-new-template/index.tsx +var import_components52 = __toESM(require_components()); +var import_html_entities4 = __toESM(require_html_entities()); +var import_element62 = __toESM(require_element()); +var import_data12 = __toESM(require_data()); +var import_core_data8 = __toESM(require_core_data()); +var import_compose14 = __toESM(require_compose()); +var import_i18n52 = __toESM(require_i18n()); +var import_notices = __toESM(require_notices()); +var import_dom11 = __toESM(require_dom()); +import { useNavigate, useInvalidate } from "@wordpress/route"; + +// routes/template-list/add-new-template/add-custom-template-modal-content.tsx +var import_element60 = __toESM(require_element()); +var import_i18n50 = __toESM(require_i18n()); +var import_components50 = __toESM(require_components()); +var import_core_data7 = __toESM(require_core_data()); +var import_html_entities3 = __toESM(require_html_entities()); +var import_compose13 = __toESM(require_compose()); +var import_dom10 = __toESM(require_dom()); +var import_url4 = __toESM(require_url()); + +// routes/template-list/add-new-template/utils.ts +var import_data11 = __toESM(require_data()); +var import_core_data6 = __toESM(require_core_data()); +var import_html_entities2 = __toESM(require_html_entities()); +var import_element59 = __toESM(require_element()); +var import_i18n49 = __toESM(require_i18n()); +var import_url3 = __toESM(require_url()); +var TEMPLATE_POST_TYPE = "wp_template"; +var EMPTY_OBJECT2 = {}; +var getValueFromObjectPath = (object, path) => { + let value = object; + path.split(".").forEach((fieldName) => { + value = value?.[fieldName]; + }); + return value; +}; +function prefixSlug(prefix, slug) { + return `${prefix}-${(0, import_url3.safeDecodeURI)(slug)}`; +} +function mapToIHasNameAndId(entities, path) { + return (entities || []).map((entity) => ({ + ...entity, + name: (0, import_html_entities2.decodeEntities)(getValueFromObjectPath(entity, path)) + })); +} +var useExistingTemplates = () => { + return (0, import_data11.useSelect)( + (select2) => select2(import_core_data6.store).getEntityRecords( + "postType", + TEMPLATE_POST_TYPE, + { + per_page: -1 + } + ), + [] + ); +}; +var useDefaultTemplateTypes = () => { + return (0, import_data11.useSelect)( + (select2) => select2(import_core_data6.store).getCurrentTheme()?.default_template_types || [], + [] + ); +}; +var usePublicPostTypes = () => { + const postTypes = (0, import_data11.useSelect)( + (select2) => select2(import_core_data6.store).getPostTypes({ per_page: -1 }), + [] + ); + return (0, import_element59.useMemo)(() => { + const excludedPostTypes = ["attachment"]; + return postTypes?.filter( + ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug) + ).sort((a2, b2) => { + if (a2.slug === "post" || b2.slug === "post") { + return 0; + } + return a2.name.localeCompare(b2.name); + }); + }, [postTypes]); +}; +var usePublicTaxonomies = () => { + const taxonomies = (0, import_data11.useSelect)( + (select2) => select2(import_core_data6.store).getTaxonomies({ per_page: -1 }), + [] + ); + return (0, import_element59.useMemo)(() => { + return taxonomies?.filter( + ({ visibility }) => visibility?.publicly_queryable + ); + }, [taxonomies]); +}; +function usePostTypeArchiveMenuItems() { + const publicPostTypes = usePublicPostTypes(); + const postTypesWithArchives = (0, import_element59.useMemo)( + () => publicPostTypes?.filter( + (postType) => postType.has_archive + ), + [publicPostTypes] + ); + const existingTemplates = useExistingTemplates(); + const postTypeLabels = (0, import_element59.useMemo)( + () => publicPostTypes?.reduce((accumulator, { labels }) => { + const singularName = labels.singular_name.toLowerCase(); + accumulator[singularName] = (accumulator[singularName] || 0) + 1; + return accumulator; + }, {}), + [publicPostTypes] + ); + const needsUniqueIdentifier = (0, import_element59.useCallback)( + ({ labels, slug }) => { + const singularName = labels.singular_name.toLowerCase(); + return postTypeLabels[singularName] > 1 && singularName !== slug; + }, + [postTypeLabels] + ); + return (0, import_element59.useMemo)( + () => postTypesWithArchives?.filter( + (postType) => !(existingTemplates || []).some( + (existingTemplate) => existingTemplate.slug === "archive-" + postType.slug + ) + ).map((postType) => { + let title; + if (needsUniqueIdentifier(postType)) { + title = (0, import_i18n49.sprintf)( + // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". + (0, import_i18n49.__)("Archive: %1$s (%2$s)"), + postType.labels.singular_name, + postType.slug + ); + } else { + title = (0, import_i18n49.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n49.__)("Archive: %s"), + postType.labels.singular_name + ); + } + return { + slug: "archive-" + postType.slug, + description: (0, import_i18n49.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n49.__)( + "Displays an archive with the latest posts of type: %s." + ), + postType.labels.singular_name + ), + title, + // `icon` is the `menu_icon` property of a post type. We + // only handle `dashicons` for now, even if the `menu_icon` + // also supports urls and svg as values. + icon: typeof postType.icon === "string" && postType.icon.startsWith("dashicons-") ? postType.icon.slice(10) : archive_default, + templatePrefix: "archive" + }; + }) || [], + [postTypesWithArchives, existingTemplates, needsUniqueIdentifier] + ); +} +var usePostTypeMenuItems = (onClickMenuItem) => { + const publicPostTypes = usePublicPostTypes(); + const defaultTemplateTypes = useDefaultTemplateTypes(); + const templateLabels = (0, import_element59.useMemo)( + () => publicPostTypes?.reduce((accumulator, { labels }) => { + const templateName = (labels.template_name || labels.singular_name).toLowerCase(); + accumulator[templateName] = (accumulator[templateName] || 0) + 1; + return accumulator; + }, {}), + [publicPostTypes] + ); + const needsUniqueIdentifier = (0, import_element59.useCallback)( + ({ labels, slug }) => { + const templateName = (labels.template_name || labels.singular_name).toLowerCase(); + return templateLabels[templateName] > 1 && templateName !== slug; + }, + [templateLabels] + ); + const templatePrefixes = (0, import_element59.useMemo)( + () => publicPostTypes?.reduce((accumulator, { slug }) => { + let suffix = slug; + if (slug !== "page") { + suffix = `single-${suffix}`; + } + accumulator[slug] = suffix; + return accumulator; + }, {}), + [publicPostTypes] + ); + const postTypesInfo = useEntitiesInfo("postType", templatePrefixes); + const menuItems = (publicPostTypes || []).reduce( + (accumulator, postType) => { + const { slug, labels, icon } = postType; + const generalTemplateSlug = templatePrefixes[slug]; + const defaultTemplateType = defaultTemplateTypes?.find( + ({ slug: _slug }) => _slug === generalTemplateSlug + ); + const _needsUniqueIdentifier = needsUniqueIdentifier(postType); + let menuItemTitle = labels.template_name || (0, import_i18n49.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n49.__)("Single item: %s"), + labels.singular_name + ); + if (_needsUniqueIdentifier) { + menuItemTitle = labels.template_name ? (0, import_i18n49.sprintf)( + // translators: 1: Name of the template e.g: "Single Item: Post". 2: Slug of the post type e.g: "book". + (0, import_i18n49._x)("%1$s (%2$s)", "post type menu label"), + labels.template_name, + slug + ) : (0, import_i18n49.sprintf)( + // translators: 1: Name of the post type e.g: "Post". 2: Slug of the post type e.g: "book". + (0, import_i18n49._x)( + "Single item: %1$s (%2$s)", + "post type menu label" + ), + labels.singular_name, + slug + ); + } + const menuItem = defaultTemplateType ? { + ...defaultTemplateType, + templatePrefix: templatePrefixes[slug] + } : { + slug: generalTemplateSlug, + title: menuItemTitle, + description: (0, import_i18n49.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n49.__)("Displays a single item: %s."), + labels.singular_name + ), + // `icon` is the `menu_icon` property of a post type. We + // only handle `dashicons` for now, even if the `menu_icon` + // also supports urls and svg as values. + icon: typeof icon === "string" && icon.startsWith("dashicons-") ? icon.slice(10) : post_default, + templatePrefix: templatePrefixes[slug] + }; + const hasEntities = postTypesInfo?.[slug]?.hasEntities; + if (hasEntities) { + menuItem.onClick = (template) => { + onClickMenuItem({ + type: "postType", + slug, + config: { + recordNamePath: "title.rendered", + queryArgs: ({ search }) => { + return { + _fields: "id,title,slug,link", + orderBy: search ? "relevance" : "modified", + exclude: postTypesInfo[slug].existingEntitiesIds + }; + }, + getSpecificTemplate: (suggestion) => { + const templateSlug = prefixSlug( + templatePrefixes[slug], + suggestion.slug + ); + return { + title: templateSlug, + slug: templateSlug, + templatePrefix: templatePrefixes[slug] + }; + } + }, + labels, + template + }); + }; + } + if (hasEntities) { + accumulator.push(menuItem); + } + return accumulator; + }, + [] + ); + const postTypesMenuItems = (0, import_element59.useMemo)( + () => menuItems.reduce( + (accumulator, postType) => { + const { slug } = postType; + let key = "postTypesMenuItems"; + if (slug === "page") { + key = "defaultPostTypesMenuItems"; + } + accumulator[key].push(postType); + return accumulator; + }, + { defaultPostTypesMenuItems: [], postTypesMenuItems: [] } + ), + [menuItems] + ); + return postTypesMenuItems; +}; +var useTaxonomiesMenuItems = (onClickMenuItem) => { + const publicTaxonomies = usePublicTaxonomies(); + const existingTemplates = useExistingTemplates(); + const defaultTemplateTypes = useDefaultTemplateTypes(); + const templatePrefixes = (0, import_element59.useMemo)( + () => publicTaxonomies?.reduce((accumulator, { slug }) => { + let suffix = slug; + if (!["category", "post_tag"].includes(slug)) { + suffix = `taxonomy-${suffix}`; + } + if (slug === "post_tag") { + suffix = `tag`; + } + accumulator[slug] = suffix; + return accumulator; + }, {}), + [publicTaxonomies] + ); + const taxonomyLabels = publicTaxonomies?.reduce( + (accumulator, { labels }) => { + const templateName = (labels.template_name || labels.singular_name).toLowerCase(); + accumulator[templateName] = (accumulator[templateName] || 0) + 1; + return accumulator; + }, + {} + ); + const needsUniqueIdentifier = (labels, slug) => { + if (["category", "post_tag"].includes(slug)) { + return false; + } + const templateName = (labels.template_name || labels.singular_name).toLowerCase(); + return taxonomyLabels[templateName] > 1 && templateName !== slug; + }; + const taxonomiesInfo = useEntitiesInfo("taxonomy", templatePrefixes); + const existingTemplateSlugs = (existingTemplates || []).map( + ({ slug }) => slug + ); + const menuItems = (publicTaxonomies || []).reduce( + (accumulator, taxonomy) => { + const { slug, labels } = taxonomy; + const generalTemplateSlug = templatePrefixes[slug]; + const defaultTemplateType = defaultTemplateTypes?.find( + ({ slug: _slug }) => _slug === generalTemplateSlug + ); + const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); + const _needsUniqueIdentifier = needsUniqueIdentifier( + labels, + slug + ); + let menuItemTitle = labels.template_name || labels.singular_name; + if (_needsUniqueIdentifier) { + menuItemTitle = labels.template_name ? (0, import_i18n49.sprintf)( + // translators: 1: Name of the template e.g: "Products by Category". 2: Slug of the taxonomy e.g: "product_cat". + (0, import_i18n49._x)("%1$s (%2$s)", "taxonomy template menu label"), + labels.template_name, + slug + ) : (0, import_i18n49.sprintf)( + // translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat". + (0, import_i18n49._x)("%1$s (%2$s)", "taxonomy menu label"), + labels.singular_name, + slug + ); + } + const menuItem = defaultTemplateType ? { + ...defaultTemplateType, + templatePrefix: templatePrefixes[slug] + } : { + slug: generalTemplateSlug, + title: menuItemTitle, + description: (0, import_i18n49.sprintf)( + // translators: %s: Name of the taxonomy e.g: "Product Categories". + (0, import_i18n49.__)("Displays taxonomy: %s."), + labels.singular_name + ), + icon: block_meta_default, + templatePrefix: templatePrefixes[slug] + }; + const hasEntities = taxonomiesInfo?.[slug]?.hasEntities; + if (hasEntities) { + menuItem.onClick = (template) => { + onClickMenuItem({ + type: "taxonomy", + slug, + config: { + queryArgs: ({ search }) => { + return { + _fields: "id,name,slug,link", + orderBy: search ? "name" : "count", + exclude: taxonomiesInfo[slug].existingEntitiesIds + }; + }, + getSpecificTemplate: (suggestion) => { + const templateSlug = prefixSlug( + templatePrefixes[slug], + suggestion.slug + ); + return { + title: templateSlug, + slug: templateSlug, + templatePrefix: templatePrefixes[slug] + }; + } + }, + labels, + hasGeneralTemplate, + template + }); + }; + } + if (!hasGeneralTemplate || hasEntities) { + accumulator.push(menuItem); + } + return accumulator; + }, + [] + ); + const taxonomiesMenuItems = (0, import_element59.useMemo)( + () => menuItems.reduce( + (accumulator, taxonomy) => { + const { slug } = taxonomy; + let key = "taxonomiesMenuItems"; + if (["category", "tag"].includes(slug)) { + key = "defaultTaxonomiesMenuItems"; + } + accumulator[key].push(taxonomy); + return accumulator; + }, + { defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] } + ), + [menuItems] + ); + return taxonomiesMenuItems; +}; +var USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { + user: "author" +}; +var USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { + user: { who: "authors" } +}; +function useAuthorMenuItem(onClickMenuItem) { + const existingTemplates = useExistingTemplates(); + const defaultTemplateTypes = useDefaultTemplateTypes(); + const authorInfo = useEntitiesInfo( + "root", + USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, + USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS + ); + let authorMenuItem = defaultTemplateTypes?.find( + ({ slug }) => slug === "author" + ); + if (!authorMenuItem) { + authorMenuItem = { + description: (0, import_i18n49.__)( + "Displays latest posts written by a single author." + ), + slug: "author", + title: "Author" + }; + } + const hasGeneralTemplate = !!existingTemplates?.find( + ({ slug }) => slug === "author" + ); + if (authorInfo.user?.hasEntities) { + authorMenuItem = { ...authorMenuItem, templatePrefix: "author" }; + authorMenuItem.onClick = (template) => { + onClickMenuItem({ + type: "root", + slug: "user", + config: { + queryArgs: ({ search }) => { + return { + _fields: "id,name,slug,link", + orderBy: search ? "name" : "registered_date", + exclude: authorInfo.user.existingEntitiesIds, + who: "authors" + }; + }, + getSpecificTemplate: (suggestion) => { + const templateSlug = prefixSlug( + "author", + suggestion.slug + ); + return { + title: (0, import_i18n49.sprintf)( + // translators: %s: Name of the author e.g: "Admin". + (0, import_i18n49.__)("Author: %s"), + suggestion.name + ), + slug: templateSlug, + templatePrefix: "author" + }; + } + }, + labels: { + singular_name: (0, import_i18n49.__)("Author"), + search_items: (0, import_i18n49.__)("Search Authors"), + not_found: (0, import_i18n49.__)("No authors found."), + all_items: (0, import_i18n49.__)("All Authors") + }, + hasGeneralTemplate, + template + }); + }; + } + if (!hasGeneralTemplate || authorInfo.user?.hasEntities) { + return authorMenuItem; + } +} +var useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT2) => { + const entitiesHasRecords = (0, import_data11.useSelect)( + (select2) => { + return Object.keys(templatePrefixes || {}).reduce( + (accumulator, slug) => { + accumulator[slug] = !!select2( + import_core_data6.store + ).getEntityRecords(entityName, slug, { + per_page: 1, + _fields: "id", + context: "view", + ...additionalQueryParameters[slug] + })?.length; + return accumulator; + }, + {} + ); + }, + [templatePrefixes, entityName, additionalQueryParameters] + ); + const entitiesInfo = (0, import_element59.useMemo)(() => { + return Object.keys(templatePrefixes || {}).reduce( + (accumulator, slug) => { + accumulator[slug] = { + hasEntities: entitiesHasRecords[slug] + }; + return accumulator; + }, + {} + ); + }, [templatePrefixes, entitiesHasRecords]); + return entitiesInfo; +}; + +// routes/template-list/add-new-template/add-custom-template-modal-content.tsx +var EMPTY_ARRAY8 = []; +function SuggestionListItem({ + suggestion, + search, + onSelect, + entityForSuggestions +}) { + const baseCssClass = "template-list-custom-template-modal__suggestions_list__list-item"; + return /* @__PURE__ */ React.createElement( + import_components50.Composite.Item, + { + render: /* @__PURE__ */ React.createElement( + import_components50.Button, + { + __next40pxDefaultSize: true, + role: "option", + className: baseCssClass, + onClick: () => onSelect( + entityForSuggestions.config.getSpecificTemplate( + suggestion + ) + ) + } + ) + }, + /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + size: "body", + lineHeight: 1.53846153846, + weight: 500, + className: `${baseCssClass}__title` + }, + /* @__PURE__ */ React.createElement( + import_components50.TextHighlight, + { + text: (0, import_html_entities3.decodeEntities)(suggestion.name), + highlight: search + } + ) + ), + suggestion.link && /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + size: "body", + lineHeight: 1.53846153846, + className: `${baseCssClass}__info` + }, + (0, import_url4.safeDecodeURI)(suggestion.link) + ) + ); +} +function useSearchSuggestions(entityForSuggestions, search) { + const { config } = entityForSuggestions; + const query = (0, import_element60.useMemo)( + () => ({ + order: "asc", + context: "view", + search, + per_page: search ? 20 : 10, + ...config.queryArgs({ search }) + }), + [search, config] + ); + const { records: searchResults, hasResolved: searchHasResolved } = (0, import_core_data7.useEntityRecords)( + entityForSuggestions.type, + entityForSuggestions.slug, + query + ); + const [suggestions, setSuggestions] = (0, import_element60.useState)(EMPTY_ARRAY8); + (0, import_element60.useEffect)(() => { + if (!searchHasResolved) { + return; + } + let newSuggestions = EMPTY_ARRAY8; + if (searchResults?.length) { + newSuggestions = searchResults; + if (config.recordNamePath) { + newSuggestions = mapToIHasNameAndId( + newSuggestions, + config.recordNamePath + ); + } + } + setSuggestions(newSuggestions); + }, [searchResults, searchHasResolved, config.recordNamePath]); + return suggestions; +} +function SuggestionList({ + entityForSuggestions, + onSelect +}) { + const [search, setSearch, debouncedSearch] = (0, import_compose13.useDebouncedInput)(); + const suggestions = useSearchSuggestions( + entityForSuggestions, + debouncedSearch + ); + const { labels } = entityForSuggestions; + const [showSearchControl, setShowSearchControl] = (0, import_element60.useState)(false); + if (!showSearchControl && suggestions?.length > 9) { + setShowSearchControl(true); + } + return /* @__PURE__ */ React.createElement(React.Fragment, null, showSearchControl && /* @__PURE__ */ React.createElement( + import_components50.SearchControl, + { + onChange: setSearch, + value: search, + label: labels.search_items, + placeholder: labels.search_items + } + ), !!suggestions?.length && /* @__PURE__ */ React.createElement( + import_components50.Composite, + { + orientation: "vertical", + role: "listbox", + className: "template-list-custom-template-modal__suggestions_list", + "aria-label": (0, import_i18n50.__)("Suggestions list") + }, + suggestions.map((suggestion) => /* @__PURE__ */ React.createElement( + SuggestionListItem, + { + key: suggestion.slug, + suggestion, + search: debouncedSearch, + onSelect, + entityForSuggestions + } + )) + ), debouncedSearch && !suggestions?.length && /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + as: "p", + className: "template-list-custom-template-modal__no-results" + }, + labels.not_found + )); +} +function AddCustomTemplateModalContent({ + onSelect, + entityForSuggestions, + onBack, + containerRef +}) { + const [showSearchEntities, setShowSearchEntities] = (0, import_element60.useState)(false); + (0, import_element60.useEffect)(() => { + if (containerRef.current) { + const [firstFocusable] = import_dom10.focus.focusable.find( + containerRef.current + ); + firstFocusable?.focus(); + } + }, [showSearchEntities, containerRef]); + return /* @__PURE__ */ React.createElement( + import_components50.__experimentalVStack, + { + spacing: 4, + className: "template-list-custom-template-modal__contents-wrapper", + alignment: "left" + }, + !showSearchEntities && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_components50.__experimentalText, { as: "p" }, (0, import_i18n50.__)( + "Select whether to create a single template for all items or a specific one." + )), /* @__PURE__ */ React.createElement( + import_components50.Flex, + { + className: "template-list-custom-template-modal__contents", + gap: "4", + align: "initial" + }, + /* @__PURE__ */ React.createElement( + import_components50.FlexItem, + { + isBlock: true, + as: import_components50.Button, + onClick: () => { + const { + slug, + title, + description, + templatePrefix + } = entityForSuggestions.template; + onSelect({ + slug, + title, + description, + templatePrefix + }); + } + }, + /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + as: "span", + weight: 500, + lineHeight: 1.53846153846 + }, + entityForSuggestions.labels.all_items + ), + /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + as: "span", + lineHeight: 1.53846153846 + }, + // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. + (0, import_i18n50.__)("For all items") + ) + ), + /* @__PURE__ */ React.createElement( + import_components50.FlexItem, + { + isBlock: true, + as: import_components50.Button, + onClick: () => { + setShowSearchEntities(true); + } + }, + /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + as: "span", + weight: 500, + lineHeight: 1.53846153846 + }, + entityForSuggestions.labels.singular_name + ), + /* @__PURE__ */ React.createElement( + import_components50.__experimentalText, + { + as: "span", + lineHeight: 1.53846153846 + }, + // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. + (0, import_i18n50.__)("For a specific item") + ) + ) + ), /* @__PURE__ */ React.createElement(import_components50.Flex, { justify: "right" }, /* @__PURE__ */ React.createElement( + import_components50.Button, + { + __next40pxDefaultSize: true, + variant: "tertiary", + onClick: onBack + }, + (0, import_i18n50.__)("Back") + ))), + showSearchEntities && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_components50.__experimentalText, { as: "p" }, (0, import_i18n50.__)( + "This template will be used only for the specific item chosen." + )), /* @__PURE__ */ React.createElement( + SuggestionList, + { + entityForSuggestions, + onSelect + } + ), /* @__PURE__ */ React.createElement(import_components50.Flex, { justify: "right" }, /* @__PURE__ */ React.createElement( + import_components50.Button, + { + __next40pxDefaultSize: true, + variant: "tertiary", + onClick: () => { + if (entityForSuggestions.hasGeneralTemplate) { + onBack(); + } else { + setShowSearchEntities(false); + } + } + }, + (0, import_i18n50.__)("Back") + ))) + ); +} +var add_custom_template_modal_content_default = AddCustomTemplateModalContent; + +// node_modules/tslib/tslib.es6.mjs +var __assign = function() { + __assign = Object.assign || function __assign2(t2) { + for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { + s2 = arguments[i2]; + for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2]; + } + return t2; + }; + return __assign.apply(this, arguments); +}; + +// node_modules/lower-case/dist.es2015/index.js +function lowerCase(str) { + return str.toLowerCase(); +} + +// node_modules/no-case/dist.es2015/index.js +var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; +var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; +function noCase(input, options) { + if (options === void 0) { + options = {}; + } + var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; + var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); + var start = 0; + var end = result.length; + while (result.charAt(start) === "\0") + start++; + while (result.charAt(end - 1) === "\0") + end--; + return result.slice(start, end).split("\0").map(transform).join(delimiter); +} +function replace(input, re, value) { + if (re instanceof RegExp) + return input.replace(re, value); + return re.reduce(function(input2, re2) { + return input2.replace(re2, value); + }, input); +} + +// node_modules/dot-case/dist.es2015/index.js +function dotCase(input, options) { + if (options === void 0) { + options = {}; + } + return noCase(input, __assign({ delimiter: "." }, options)); +} + +// node_modules/param-case/dist.es2015/index.js +function paramCase(input, options) { + if (options === void 0) { + options = {}; + } + return dotCase(input, __assign({ delimiter: "-" }, options)); +} + +// routes/template-list/add-new-template/add-custom-generic-template-modal-content.tsx +var import_element61 = __toESM(require_element()); +var import_i18n51 = __toESM(require_i18n()); +var import_components51 = __toESM(require_components()); +function AddCustomGenericTemplateModalContent({ + createTemplate, + onBack +}) { + const [title, setTitle] = (0, import_element61.useState)(""); + const defaultTitle = (0, import_i18n51.__)("Custom Template"); + const [isBusy, setIsBusy] = (0, import_element61.useState)(false); + const inputRef = (0, import_element61.useRef)(null); + (0, import_element61.useEffect)(() => { + if (inputRef.current) { + inputRef.current.focus(); + } + }, []); + async function onCreateTemplate(event) { + event.preventDefault(); + if (isBusy) { + return; + } + setIsBusy(true); + try { + await createTemplate( + { + slug: paramCase(title || defaultTitle) || "wp-custom-template", + title: title || defaultTitle + }, + false + ); + } finally { + setIsBusy(false); + } + } + return /* @__PURE__ */ React.createElement("form", { onSubmit: onCreateTemplate }, /* @__PURE__ */ React.createElement(import_components51.__experimentalVStack, { spacing: 6 }, /* @__PURE__ */ React.createElement( + import_components51.TextControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n51.__)("Name"), + value: title, + onChange: setTitle, + placeholder: defaultTitle, + disabled: isBusy, + ref: inputRef, + help: (0, import_i18n51.__)( + // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts + 'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.' + ) + } + ), /* @__PURE__ */ React.createElement( + import_components51.__experimentalHStack, + { + className: "template-list-custom-generic-template__modal-actions", + justify: "right" + }, + /* @__PURE__ */ React.createElement( + import_components51.Button, + { + __next40pxDefaultSize: true, + variant: "tertiary", + onClick: onBack + }, + (0, import_i18n51.__)("Back") + ), + /* @__PURE__ */ React.createElement( + import_components51.Button, + { + __next40pxDefaultSize: true, + variant: "primary", + type: "submit", + isBusy, + "aria-disabled": isBusy + }, + (0, import_i18n51.__)("Create") + ) + ))); +} +var add_custom_generic_template_modal_content_default = AddCustomGenericTemplateModalContent; + +// routes/template-list/add-new-template/index.tsx +var TEMPLATE_POST_TYPE2 = "wp_template"; +var DEFAULT_TEMPLATE_SLUGS = [ + "front-page", + "home", + "single", + "page", + "index", + "archive", + "author", + "category", + "date", + "tag", + "search", + "404" +]; +var TEMPLATE_ICONS = { + "front-page": home_default, + home: verse_default, + single: pin_default, + page: page_default, + archive: archive_default, + search: search_default, + 404: not_found_default, + index: list_default, + category: category_default, + author: comment_author_avatar_default, + taxonomy: block_meta_default, + date: calendar_default, + tag: tag_default, + attachment: media_default +}; +function TemplateListItem({ + title, + direction, + className, + description, + icon, + onClick, + children +}) { + return /* @__PURE__ */ React.createElement( + import_components52.Button, + { + __next40pxDefaultSize: true, + className, + onClick, + label: description, + showTooltip: !!description + }, + /* @__PURE__ */ React.createElement( + import_components52.Flex, + { + as: "span", + align: "center", + justify: "center", + style: { width: "100%" }, + direction + }, + /* @__PURE__ */ React.createElement("div", { className: "template-list-add-new-template__template-icon" }, /* @__PURE__ */ React.createElement(import_components52.Icon, { icon })), + /* @__PURE__ */ React.createElement( + import_components52.__experimentalVStack, + { + className: "template-list-add-new-template__template-name", + alignment: "center", + spacing: 0 + }, + /* @__PURE__ */ React.createElement( + import_components52.__experimentalText, + { + align: "center", + weight: 500, + lineHeight: 1.53846153846 + }, + title + ), + children + ) + ) + ); +} +var modalContentMap = { + templatesList: 1, + customTemplate: 2, + customGenericTemplate: 3 +}; +function NewTemplateModal({ onClose }) { + const [modalContent, setModalContent] = (0, import_element62.useState)(modalContentMap.templatesList); + const [entityForSuggestions, setEntityForSuggestions] = (0, import_element62.useState)(); + const [isSubmitting, setIsSubmitting] = (0, import_element62.useState)(false); + const missingTemplates = useMissingTemplates( + setEntityForSuggestions, + () => setModalContent(modalContentMap.customTemplate) + ); + const navigate = useNavigate(); + const invalidate = useInvalidate(); + const { saveEntityRecord } = (0, import_data12.useDispatch)(import_core_data8.store); + const { createErrorNotice, createSuccessNotice } = (0, import_data12.useDispatch)(import_notices.store); + const containerRef = (0, import_element62.useRef)(null); + const isMobile = (0, import_compose14.useViewportMatch)("medium", "<"); + const homeUrl = (0, import_data12.useSelect)((select2) => { + return select2(import_core_data8.store).getEntityRecord("root", "__unstableBase")?.home; + }, []); + const TEMPLATE_SHORT_DESCRIPTIONS = { + "front-page": homeUrl, + date: (0, import_i18n52.sprintf)( + // translators: %s: The homepage url. + (0, import_i18n52.__)("E.g. %s"), + homeUrl + "/" + (/* @__PURE__ */ new Date()).getFullYear() + ) + }; + (0, import_element62.useEffect)(() => { + if (containerRef.current && modalContent === modalContentMap.templatesList) { + const [firstFocusable] = import_dom11.focus.focusable.find( + containerRef.current + ); + firstFocusable?.focus(); + } + }, [modalContent]); + async function createTemplate(template, isWPSuggestion = true) { + if (isSubmitting) { + return; + } + setIsSubmitting(true); + try { + const { title, description, slug } = template; + const newTemplate = await saveEntityRecord( + "postType", + TEMPLATE_POST_TYPE2, + { + description, + // Slugs need to be strings, so this is for template `404` + slug: slug.toString(), + status: "publish", + title, + // This adds post meta fields in template + meta: { + is_wp_suggestion: isWPSuggestion, + // Mark as inactive by default when template activation is enabled + is_inactive_by_default: true + } + }, + { throwOnError: true } + ); + navigate({ + to: `/types/wp_template/edit/${encodeURIComponent( + String(newTemplate.id) + )}` + }); + invalidate(); + createSuccessNotice( + (0, import_i18n52.sprintf)( + // translators: %s: Title of the created post or template, e.g: "Hello world". + (0, import_i18n52.__)('"%s" successfully created.'), + (0, import_html_entities4.decodeEntities)(newTemplate.title?.rendered || title) || (0, import_i18n52.__)("(no title)") + ), + { + type: "snackbar" + } + ); + } catch (error) { + const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n52.__)("An error occurred while creating the template."); + createErrorNotice(errorMessage, { + type: "snackbar" + }); + } finally { + setIsSubmitting(false); + } + } + const onModalClose = () => { + onClose(); + setModalContent(modalContentMap.templatesList); + }; + let modalTitle = (0, import_i18n52.__)("Add template"); + if (modalContent === modalContentMap.customTemplate && entityForSuggestions) { + modalTitle = (0, import_i18n52.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n52.__)("Add template: %s"), + entityForSuggestions.labels.singular_name + ); + } else if (modalContent === modalContentMap.customGenericTemplate) { + modalTitle = (0, import_i18n52.__)("Create custom template"); + } + return /* @__PURE__ */ React.createElement( + import_components52.Modal, + { + title: modalTitle, + className: clsx_default("template-list-add-new-template__modal", { + "template-list-add-new-template__modal_template_list": modalContent === modalContentMap.templatesList, + "template-list-custom-template-modal": modalContent === modalContentMap.customTemplate + }), + onRequestClose: onModalClose, + overlayClassName: modalContent === modalContentMap.customGenericTemplate ? "template-list-custom-generic-template__modal" : void 0, + ref: containerRef + }, + modalContent === modalContentMap.templatesList && /* @__PURE__ */ React.createElement( + import_components52.__experimentalGrid, + { + columns: isMobile ? 2 : 3, + gap: 4, + align: "flex-start", + justify: "center", + className: "template-list-add-new-template__template-list__contents" + }, + /* @__PURE__ */ React.createElement(import_components52.Flex, { className: "template-list-add-new-template__template-list__prompt" }, (0, import_i18n52.__)( + "Select what the new template should apply to:" + )), + missingTemplates.map((template) => { + const { title, slug, onClick } = template; + return /* @__PURE__ */ React.createElement( + TemplateListItem, + { + key: slug, + title, + direction: "column", + className: "template-list-add-new-template__template-button", + description: TEMPLATE_SHORT_DESCRIPTIONS[slug], + icon: TEMPLATE_ICONS[slug] || layout_default, + onClick: () => onClick ? onClick(template) : createTemplate(template) + } + ); + }), + /* @__PURE__ */ React.createElement( + TemplateListItem, + { + title: (0, import_i18n52.__)("Custom template"), + direction: "row", + className: "template-list-add-new-template__custom-template-button", + icon: pencil_default, + onClick: () => setModalContent( + modalContentMap.customGenericTemplate + ) + }, + /* @__PURE__ */ React.createElement( + import_components52.__experimentalText, + { + lineHeight: 1.53846153846 + }, + (0, import_i18n52.__)( + "A custom template can be manually applied to any post or page." + ) + ) + ) + ), + modalContent === modalContentMap.customTemplate && entityForSuggestions && /* @__PURE__ */ React.createElement( + add_custom_template_modal_content_default, + { + onSelect: createTemplate, + entityForSuggestions, + onBack: () => setModalContent(modalContentMap.templatesList), + containerRef + } + ), + modalContent === modalContentMap.customGenericTemplate && /* @__PURE__ */ React.createElement( + add_custom_generic_template_modal_content_default, + { + createTemplate, + onBack: () => setModalContent(modalContentMap.templatesList) + } + ) + ); +} +function NewTemplate() { + const [showModal, setShowModal] = (0, import_element62.useState)(false); + const { postType } = (0, import_data12.useSelect)((select2) => { + const { getPostType } = select2(import_core_data8.store); + return { + postType: getPostType(TEMPLATE_POST_TYPE2) + }; + }, []); + if (!postType) { + return null; + } + return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement( + import_components52.Button, + { + variant: "primary", + onClick: () => setShowModal(true), + label: postType.labels.add_new_item, + size: "compact" + }, + postType.labels.add_new_item + ), showModal && /* @__PURE__ */ React.createElement(NewTemplateModal, { onClose: () => setShowModal(false) })); +} +function useMissingTemplates(setEntityForSuggestions, onClick) { + const defaultTemplateTypes = useDefaultTemplateTypes(); + const missingDefaultTemplates = (defaultTemplateTypes || []).filter( + (template) => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) + ); + const onClickMenuItem = (_entityForSuggestions) => { + onClick?.(); + setEntityForSuggestions(_entityForSuggestions); + }; + const enhancedMissingDefaultTemplateTypes = [ + ...missingDefaultTemplates + ]; + const { defaultTaxonomiesMenuItems, taxonomiesMenuItems } = useTaxonomiesMenuItems(onClickMenuItem); + const { defaultPostTypesMenuItems, postTypesMenuItems } = usePostTypeMenuItems(onClickMenuItem); + const authorMenuItem = useAuthorMenuItem(onClickMenuItem); + [ + ...defaultTaxonomiesMenuItems, + ...defaultPostTypesMenuItems, + authorMenuItem + ].forEach((menuItem) => { + if (!menuItem) { + return; + } + const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex( + (template) => template.slug === menuItem.slug + ); + if (matchIndex > -1) { + enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem; + } else { + enhancedMissingDefaultTemplateTypes.push(menuItem); + } + }); + enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => { + return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug); + }); + const missingTemplates = [ + ...enhancedMissingDefaultTemplateTypes, + ...usePostTypeArchiveMenuItems(), + ...postTypesMenuItems, + ...taxonomiesMenuItems + ]; + return missingTemplates; +} +var add_new_template_default = (0, import_element62.memo)(NewTemplate); + +// routes/template-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='f0c5e0b685']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "f0c5e0b685"); + style.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-template-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}.routes-template-list-author-field__avatar{border-radius:50%;height:24px;margin-right:8px;opacity:0;overflow:hidden;transition:opacity .1s ease-in;width:24px}.routes-template-list-author-field__avatar.is-loaded{opacity:1}.routes-template-list-author-field__avatar img{height:100%;object-fit:cover;width:100%}.routes-template-list-author-field__icon{align-items:center;color:#757575;display:flex;height:24px;justify-content:center;margin-right:8px;width:24px}.routes-template-list-author-field__name{color:#1e1e1e}')); + document.head.appendChild(style); +} + +// routes/template-list/add-new-template/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='0ccc4ccc5c']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "0ccc4ccc5c"); + style.appendChild(document.createTextNode(".template-list-custom-template-modal__contents-wrapper{height:100%;justify-content:flex-start!important}.template-list-custom-template-modal__contents-wrapper>*{width:100%}.template-list-custom-template-modal__contents-wrapper__suggestions_list{margin-left:-12px;margin-right:-12px;width:calc(100% + 24px)}.template-list-custom-template-modal__contents>.components-button{height:auto;justify-content:center}@media (min-width:782px){.template-list-custom-template-modal{width:456px}}@media (min-width:600px){.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list{max-height:224px;overflow-y:auto}}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item{display:block;height:auto;overflow-wrap:break-word;padding:8px 12px;text-align:left;white-space:pre-wrap;width:100%}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item mark{background:none;font-weight:700}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover *,.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover mark{color:var(--wp-admin-theme-color)}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:focus{background-color:#f0f0f0}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:focus:not(:disabled){box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color) inset}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__info,.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__title{display:block;overflow:hidden;text-overflow:ellipsis}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__info{color:#757575;word-break:break-all}.template-list-custom-template-modal__no-results{border:1px solid #ccc;border-radius:2px;padding:16px}.template-list-custom-generic-template__modal .components-modal__header{border-bottom:none}.template-list-custom-generic-template__modal .components-modal__content:before{margin-bottom:4px}@media (min-width:960px){.template-list-add-new-template__modal{margin-top:64px;max-height:calc(100% - 128px);max-width:832px;width:calc(100% - 128px)}}.template-list-add-new-template__modal .template-list-add-new-template__custom-template-button svg,.template-list-add-new-template__modal .template-list-add-new-template__template-button svg{fill:var(--wp-admin-theme-color)}.template-list-add-new-template__modal .template-list-add-new-template__custom-template-button .template-list-add-new-template__template-name{align-items:flex-start;flex-grow:1}.template-list-add-new-template__modal .template-list-add-new-template__template-icon{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:100%;max-height:40px;max-width:40px;padding:8px}.template-list-add-new-template__template-list__contents>.components-button,.template-list-custom-template-modal__contents>.components-button{border:1px solid #ddd;display:flex;flex-direction:column;justify-content:center;outline:1px solid #0000;padding:32px}.template-list-add-new-template__template-list__contents>.components-button span:first-child,.template-list-custom-template-modal__contents>.components-button span:first-child{color:#1e1e1e}.template-list-add-new-template__template-list__contents>.components-button span,.template-list-custom-template-modal__contents>.components-button span{color:#757575}.template-list-add-new-template__template-list__contents>.components-button:hover,.template-list-custom-template-modal__contents>.components-button:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-color:#0000;color:var(--wp-admin-theme-color-darker-10)}.template-list-add-new-template__template-list__contents>.components-button:hover span,.template-list-custom-template-modal__contents>.components-button:hover span{color:var(--wp-admin-theme-color)}.template-list-add-new-template__template-list__contents>.components-button:focus,.template-list-custom-template-modal__contents>.components-button:focus{border-color:#0000;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:3px solid #0000}.template-list-add-new-template__template-list__contents>.components-button:focus span:first-child,.template-list-custom-template-modal__contents>.components-button:focus span:first-child{color:var(--wp-admin-theme-color)}.template-list-add-new-template__template-list__contents .template-list-add-new-template__custom-template-button,.template-list-add-new-template__template-list__contents .template-list-add-new-template__template-list__prompt,.template-list-custom-template-modal__contents .template-list-add-new-template__custom-template-button,.template-list-custom-template-modal__contents .template-list-add-new-template__template-list__prompt{grid-column:1/-1}.template-list-add-new-template__template-list__contents>.components-button{align-items:flex-start;height:100%;text-align:start}")); + document.head.appendChild(style); +} + +// routes/template-list/stage-activation.tsx +var { usePostActions, templateTitleField } = unlock2(import_editor.privateApis); +var { Tabs } = unlock2(import_components53.privateApis); +function getItemId(item) { + return item.id.toString(); +} +function TemplateListActivation() { + const invalidate = useInvalidate2(); + const { activeView = "active" } = useParams({ + from: "/templates/list/$activeView" + }); + const navigate = useNavigate2(); + const searchParams = useSearch({ from: "/templates/list/$activeView" }); + const postTypeObject = (0, import_data13.useSelect)( + (select2) => select2(import_core_data9.store).getPostType("wp_template"), + [] + ); + const [selectedRegisteredTemplate, setSelectedRegisteredTemplate] = (0, import_element63.useState)(null); + const defaultView = DEFAULT_VIEW; + const activeViewOverrides = (0, import_element63.useMemo)( + () => getActiveViewOverridesForTab(activeView), + [activeView] + ); + const handleQueryParamsChange = (0, import_element63.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, isModified, updateView, resetToDefault } = useView({ + kind: "postType", + name: "wp_template", + slug: "default-new", + defaultView, + activeViewOverrides, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const onReset = () => { + resetToDefault(); + invalidate(); + }; + const onChangeView = (newView) => { + updateView(newView); + if (newView.type !== view.type) { + invalidate(); + } + }; + const { records, isLoading, staticRecords } = useTemplates(activeView); + const users = (0, import_data13.useSelect)( + (select2) => { + const { getUser } = select2(import_core_data9.store); + return records.reduce((acc, record) => { + if (record.author_text) { + if (!acc[record.author_text]) { + acc[record.author_text] = record.author_text; + } + } else if (record.author) { + if (!acc[record.author]) { + acc[record.author] = getUser(record.author); + } + } + return acc; + }, {}); + }, + [records] + ); + const fields = (0, import_element63.useMemo)(() => { + const elements = []; + for (const author in users) { + elements.push({ + value: users[author]?.id ?? author, + label: users[author]?.name ?? author + }); + } + return [ + previewField, + templateTitleField, + descriptionField, + activeField, + slugField, + { + ...authorField, + elements + } + ]; + }, [users]); + const { data: posts, paginationInfo } = (0, import_element63.useMemo)(() => { + return filterSortAndPaginate(records, view, fields); + }, [records, view, fields]); + const cleanupDeletedPostIdsFromUrl = (0, import_element63.useCallback)( + (deletedItems) => { + const deletedIds = deletedItems.map( + (item) => item.id.toString() + ); + const currentPostIds = searchParams.postIds || []; + const remainingPostIds = currentPostIds.filter( + (id) => !deletedIds.includes(id) + ); + if (remainingPostIds.length !== currentPostIds.length) { + navigate({ + search: { + ...searchParams, + postIds: remainingPostIds.length > 0 ? remainingPostIds : void 0 + } + }); + } else { + invalidate(); + } + }, + [invalidate, searchParams, navigate] + ); + const onActionPerformed = (0, import_element63.useCallback)( + (actionId, items) => { + if (actionId === "move-to-trash" || actionId === "permanently-delete") { + cleanupDeletedPostIdsFromUrl(items); + } + if (actionId === "duplicate-post") { + navigate({ + to: `/templates/list/user` + }); + } + }, + [cleanupDeletedPostIdsFromUrl, navigate] + ); + const setActiveTemplateAction = useSetActiveTemplateAction(); + const postTypeActions = usePostActions({ + postType: "wp_template", + context: "list", + onActionPerformed + }); + const actions = (0, import_element63.useMemo)(() => { + return [ + setActiveTemplateAction, + ...postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }) + ]; + }, [setActiveTemplateAction, postTypeActions]); + const tabs = (0, import_element63.useMemo)(() => { + const baseTabs = [ + { + slug: "active", + label: (0, import_i18n53.__)("Active"), + icon: published_default + }, + { + slug: "user", + label: (0, import_i18n53.__)("Created templates"), + icon: comment_author_avatar_default + } + ]; + const authorMap = /* @__PURE__ */ new Map(); + staticRecords.forEach((record) => { + if (record.author_text && !authorMap.has(record.author_text)) { + authorMap.set(record.author_text, { + slug: record.author_text, + label: record.author_text + }); + } + }); + const authorTabs = Array.from(authorMap.values()); + return [...baseTabs, ...authorTabs]; + }, [staticRecords]); + const handleTabChange = (0, import_element63.useCallback)( + (viewSlug) => { + navigate({ + to: `/templates/list/${viewSlug}` + }); + }, + [navigate] + ); + if (!postTypeObject) { + return null; + } + const selection = searchParams.postIds ?? []; + if (view.type === "list" && selection.length === 0 && posts?.length > 0) { + selection.push(posts[0].id.toString()); + } + if (view.type === "list") { + selection.splice(1); + } + const duplicateAction = actions.find( + (action) => action.id === "duplicate-post" + ); + if (duplicateAction && !("RenderModal" in duplicateAction)) { + throw new Error( + "Expected duplicate action to have a RenderModal component" + ); + } + return /* @__PURE__ */ React.createElement( + page_default2, + { + title: (0, import_i18n53.__)("Templates"), + className: "template-page", + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components53.Button, + { + variant: "tertiary", + size: "compact", + onClick: onReset + }, + (0, import_i18n53.__)("Reset view") + ), /* @__PURE__ */ React.createElement(add_new_template_default, null)), + hasPadding: false + }, + tabs.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "routes-template-list__tabs-wrapper" }, /* @__PURE__ */ React.createElement( + Tabs, + { + onSelect: handleTabChange, + selectedTabId: activeView ?? "active" + }, + /* @__PURE__ */ React.createElement(Tabs.TabList, null, tabs.map((tab) => /* @__PURE__ */ React.createElement(Tabs.Tab, { tabId: tab.slug, key: tab.slug }, tab.label))) + )), + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: posts, + fields, + view, + onChangeView, + actions, + isLoading, + paginationInfo, + defaultLayouts: DEFAULT_LAYOUTS, + getItemId, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + postIds: items.length > 0 ? items : void 0, + edit: items.length === 0 ? void 0 : searchParams.edit + } + }); + }, + isItemClickable: () => true, + onClickItem: (item) => { + if (typeof item.id === "string") { + setSelectedRegisteredTemplate(item); + } else { + navigate({ + to: `/types/wp_template/edit/${encodeURIComponent( + item.id + )}` + }); + } + } + } + ), + selectedRegisteredTemplate && duplicateAction && /* @__PURE__ */ React.createElement( + import_components53.Modal, + { + title: (0, import_i18n53.__)("Duplicate"), + onRequestClose: () => setSelectedRegisteredTemplate(null), + size: "small" + }, + /* @__PURE__ */ React.createElement( + duplicateAction.RenderModal, + { + items: [selectedRegisteredTemplate], + closeModal: () => setSelectedRegisteredTemplate(null) + } + ) + ) + ); +} +var stageActivation = TemplateListActivation; + +// routes/template-list/stage-legacy.tsx +import { + useParams as useParams2, + useNavigate as useNavigate3, + useSearch as useSearch2, + useInvalidate as useInvalidate3 +} from "@wordpress/route"; +var import_core_data11 = __toESM(require_core_data()); +var import_components54 = __toESM(require_components()); +var import_data14 = __toESM(require_data()); +var import_element65 = __toESM(require_element()); +var import_editor2 = __toESM(require_editor()); +var import_i18n54 = __toESM(require_i18n()); + +// routes/template-list/use-templates-legacy.ts +var import_element64 = __toESM(require_element()); +var import_core_data10 = __toESM(require_core_data()); +var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions4 } = unlock2(import_core_data10.privateApis); +function useTemplatesLegacy(activeView = "all") { + const { records, isResolving } = useEntityRecordsWithPermissions4( + "postType", + "wp_template", + { + per_page: -1 + } + ); + const filteredRecords = (0, import_element64.useMemo)(() => { + if (!records) { + return []; + } + if (activeView === "all") { + return records; + } + return records.filter( + (record) => record.author_text === activeView + ); + }, [records, activeView]); + return { + records: filteredRecords, + isLoading: isResolving, + allRecords: records || [] + // For building author tabs + }; +} + +// routes/template-list/stage-legacy.tsx +var { usePostActions: usePostActions2, templateTitleField: templateTitleField2 } = unlock2(import_editor2.privateApis); +var { Tabs: Tabs2 } = unlock2(import_components54.privateApis); +function getItemId2(item) { + return item.id.toString(); +} +function TemplateListLegacy() { + const invalidate = useInvalidate3(); + const { activeView = "all" } = useParams2({ + from: "/templates/list/$activeView" + }); + const navigate = useNavigate3(); + const searchParams = useSearch2({ from: "/templates/list/$activeView" }); + const postTypeObject = (0, import_data14.useSelect)( + (select2) => select2(import_core_data11.store).getPostType("wp_template"), + [] + ); + const defaultView = DEFAULT_VIEW_LEGACY; + const activeViewOverrides = (0, import_element65.useMemo)( + () => getActiveViewOverridesForTabLegacy(activeView), + [activeView] + ); + const handleQueryParamsChange = (0, import_element65.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, isModified, updateView, resetToDefault } = useView({ + kind: "postType", + name: "wp_template", + slug: "default-new", + defaultView, + activeViewOverrides, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const onReset = () => { + resetToDefault(); + invalidate(); + }; + const onChangeView = (newView) => { + updateView(newView); + if (newView.type !== view.type) { + invalidate(); + } + }; + const { records, isLoading, allRecords } = useTemplatesLegacy(activeView); + const users = (0, import_data14.useSelect)( + (select2) => { + const { getUser } = select2(import_core_data11.store); + return records.reduce((acc, record) => { + if (record.author_text) { + if (!acc[record.author_text]) { + acc[record.author_text] = record.author_text; + } + } else if (record.author) { + if (!acc[record.author]) { + acc[record.author] = getUser(record.author); + } + } + return acc; + }, {}); + }, + [records] + ); + const fields = (0, import_element65.useMemo)(() => { + const elements = []; + for (const author in users) { + elements.push({ + value: users[author]?.id ?? author, + label: users[author]?.name ?? author + }); + } + return [ + previewField, + templateTitleField2, + descriptionField, + { + ...authorField, + elements + } + ]; + }, [users]); + const { data: posts, paginationInfo } = (0, import_element65.useMemo)(() => { + return filterSortAndPaginate(records, view, fields); + }, [records, view, fields]); + const cleanupDeletedPostIdsFromUrl = (0, import_element65.useCallback)( + (deletedItems) => { + const deletedIds = deletedItems.map( + (item) => item.id.toString() + ); + const currentPostIds = searchParams.postIds || []; + const remainingPostIds = currentPostIds.filter( + (id) => !deletedIds.includes(id) + ); + if (remainingPostIds.length !== currentPostIds.length) { + navigate({ + search: { + ...searchParams, + postIds: remainingPostIds.length > 0 ? remainingPostIds : void 0 + } + }); + } else { + invalidate(); + } + }, + [invalidate, searchParams, navigate] + ); + const onActionPerformed = (0, import_element65.useCallback)( + (actionId, items) => { + if (actionId === "move-to-trash" || actionId === "permanently-delete") { + cleanupDeletedPostIdsFromUrl(items); + } + if (actionId === "duplicate-post") { + navigate({ + to: `/templates/list/all` + }); + } + }, + [cleanupDeletedPostIdsFromUrl, navigate] + ); + const postTypeActions = usePostActions2({ + postType: "wp_template", + context: "list", + onActionPerformed + }); + const actions = (0, import_element65.useMemo)(() => { + return postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }); + }, [postTypeActions]); + const tabs = (0, import_element65.useMemo)(() => { + const baseTabs = [ + { + slug: "all", + label: (0, import_i18n54.__)("All templates"), + icon: layout_default + } + ]; + const authorMap = /* @__PURE__ */ new Map(); + allRecords.forEach((record) => { + if (record.author_text && !authorMap.has(record.author_text)) { + authorMap.set(record.author_text, { + slug: record.author_text, + label: record.author_text + }); + } + }); + const authorTabs = Array.from(authorMap.values()); + return [...baseTabs, ...authorTabs]; + }, [allRecords]); + const handleTabChange = (0, import_element65.useCallback)( + (viewSlug) => { + navigate({ + to: `/templates/list/${viewSlug}` + }); + }, + [navigate] + ); + if (!postTypeObject) { + return null; + } + const selection = searchParams.postIds ?? []; + if (view.type === "list" && selection.length === 0 && posts?.length > 0) { + selection.push(posts[0].id.toString()); + } + if (view.type === "list") { + selection.splice(1); + } + return /* @__PURE__ */ React.createElement( + page_default2, + { + title: (0, import_i18n54.__)("Templates"), + className: "template-page", + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components54.Button, + { + variant: "tertiary", + size: "compact", + onClick: onReset + }, + (0, import_i18n54.__)("Reset view") + ), /* @__PURE__ */ React.createElement(add_new_template_default, null)), + hasPadding: false + }, + tabs.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "routes-template-list__tabs-wrapper" }, /* @__PURE__ */ React.createElement( + Tabs2, + { + onSelect: handleTabChange, + selectedTabId: activeView ?? "all" + }, + /* @__PURE__ */ React.createElement(Tabs2.TabList, null, tabs.map((tab) => /* @__PURE__ */ React.createElement(Tabs2.Tab, { tabId: tab.slug, key: tab.slug }, tab.label))) + )), + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: posts, + fields, + view, + onChangeView, + actions, + isLoading, + paginationInfo, + defaultLayouts: DEFAULT_LAYOUTS, + getItemId: getItemId2, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + postIds: items.length > 0 ? items : void 0, + edit: items.length === 0 ? void 0 : searchParams.edit + } + }); + }, + isItemClickable: () => true, + onClickItem: (item) => { + navigate({ + to: `/types/wp_template/edit/${encodeURIComponent( + item.id + )}` + }); + } + } + ) + ); +} +var stageLegacy = TemplateListLegacy; + +// routes/template-list/stage.tsx +function TemplateList() { + const isTemplateActivateEnabled = typeof window !== "undefined" && window.__experimentalTemplateActivate; + if (isTemplateActivateEnabled) { + return /* @__PURE__ */ React.createElement(stageActivation, null); + } + return /* @__PURE__ */ React.createElement(stageLegacy, null); +} +var stage = TemplateList; +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. + *) +*/ diff --git a/src/wp-includes/build/routes/template-list/content.min.asset.php b/src/wp-includes/build/routes/template-list/content.min.asset.php new file mode 100644 index 0000000000000..317f54ade6701 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/content.min.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-html-entities', 'wp-i18n', '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/lazy-editor', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'd307efb15c91ec1351c1'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template-list/content.min.js b/src/wp-includes/build/routes/template-list/content.min.js new file mode 100644 index 0000000000000..e2682690cb270 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/content.min.js @@ -0,0 +1,14 @@ +var a0=Object.create;var im=Object.defineProperty;var s0=Object.getOwnPropertyDescriptor;var l0=Object.getOwnPropertyNames;var u0=Object.getPrototypeOf,c0=Object.prototype.hasOwnProperty;var Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var d0=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l0(t))!c0.call(e,n)&&n!==r&&im(e,n,{get:()=>t[n],enumerable:!(o=s0(t,n))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?a0(u0(e)):{},d0(t||!e||!e.__esModule?im(r,"default",{value:e,enumerable:!0}):r,e));var H=Oe((pS,lm)=>{lm.exports=window.wp.element});var wt=Oe((gS,um)=>{um.exports=window.wp.data});var Bl=Oe((vS,cm)=>{cm.exports=window.wp.preferences});var yt=Oe((AS,dm)=>{dm.exports=window.wp.compose});var ve=Oe((IS,mm)=>{mm.exports=window.React});var R=Oe((RS,gm)=>{gm.exports=window.ReactJSXRuntime});var Am=Oe((nC,Om)=>{Om.exports=window.ReactDOM});var Vm=Oe(Im=>{"use strict";var Xo=ve();function O0(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var A0=typeof Object.is=="function"?Object.is:O0,I0=Xo.useState,V0=Xo.useEffect,R0=Xo.useLayoutEffect,k0=Xo.useDebugValue;function N0(e,t){var r=t(),o=I0({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return R0(function(){n.value=r,n.getSnapshot=t,Zl(n)&&i({inst:n})},[e,r,t]),V0(function(){return Zl(n)&&i({inst:n}),e(function(){Zl(n)&&i({inst:n})})},[e]),k0(r),r}function Zl(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!A0(e,r)}catch{return!0}}function D0(e,t){return t()}var M0=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?D0:N0;Im.useSyncExternalStore=Xo.useSyncExternalStore!==void 0?Xo.useSyncExternalStore:M0});var km=Oe((aC,Rm)=>{"use strict";Rm.exports=Vm()});var G=Oe((cC,Mm)=>{Mm.exports=window.wp.i18n});var J=Oe((dC,Fm)=>{Fm.exports=window.wp.primitives});var nc=Oe((HT,Bm)=>{Bm.exports=window.wp.privateApis});var q=Oe((UT,Ym)=>{Ym.exports=window.wp.components});var ac=Oe((YT,$m)=>{$m.exports=window.wp.keycodes});var ud=Oe((j5,ks)=>{var Ag={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},Ig=Object.keys(Ag).join("|"),qw=new RegExp(Ig,"g"),Uw=new RegExp(Ig,"");function Yw(e){return Ag[e]}var Vg=function(e){return e.replace(qw,Yw)},$w=function(e){return!!e.match(Uw)};ks.exports=Vg;ks.exports.has=$w;ks.exports.remove=Vg});var zg=Oe(($5,Hg)=>{"use strict";Hg.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,i;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(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var qo=Oe((p4,wv)=>{wv.exports=window.wp.date});var Yv=Oe((sN,Uv)=>{Uv.exports=window.wp.warning});var Nb=Oe((dL,kb)=>{kb.exports=window.wp.deprecated});var er=Oe((IL,Yb)=>{Yb.exports=window.wp.coreData});var jd=Oe((VL,$b)=>{$b.exports=window.wp.editor});var Zi=Oe((jL,r_)=>{r_.exports=window.wp.htmlEntities});var v_=Oe((XL,g_)=>{g_.exports=window.wp.notices});var qd=Oe((QL,h_)=>{h_.exports=window.wp.dom});var Ud=Oe((JL,b_)=>{b_.exports=window.wp.url});import{useParams as Y2,useNavigate as $2,useSearch as K2,useInvalidate as Z2}from"@wordpress/route";var am=Object.prototype.hasOwnProperty;function sm(e,t,r){for(r of e.keys())if(Ur(r,t))return r}function Ur(e,t){var r,o,n;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((o=e.length)===t.length)for(;o--&&Ur(e[o],t[o]););return o===-1}if(r===Set){if(e.size!==t.size)return!1;for(o of e)if(n=o,n&&typeof n=="object"&&(n=sm(t,n),!n)||!t.has(n))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(o of e)if(n=o[0],n&&typeof n=="object"&&(n=sm(t,n),!n)||!Ur(o[1],t.get(n)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((o=e.byteLength)===t.byteLength)for(;o--&&e.getInt8(o)===t.getInt8(o););return o===-1}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===t.byteLength)for(;o--&&e[o]===t[o];);return o===-1}if(!r||typeof e=="object"){o=0;for(r in e)if(am.call(e,r)&&++o&&!am.call(t,r)||!(r in t)||!Ur(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var Wn=u(H(),1),ta=u(wt(),1),zl=u(Bl(),1);function jl(e,t,r){return`dataviews-${e}-${t}-${r}`}function Hl(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(a=>a.field)),i=(e.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(o={...o,sort:t.sort}),o}function ea(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(i=>i.field));o={...o,filters:(e.filters??[]).filter(i=>!n.has(i.field))}}return t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),o}function m0(e,t){let r={...e};for(let o of t)delete r[o];return r}function Gn(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:s}=e,l=jl(t,r,o),c=(0,ta.useSelect)(w=>w(zl.store).get("core/views",l),[l]),{set:f}=(0,ta.useDispatch)(zl.store),d=c??n,m=Number(a?.page??d.page??1),p=a?.search??d.search??"",g=(0,Wn.useMemo)(()=>Hl({...d,page:m,search:p},i,n),[d,m,p,i,n]),b=!!c,x=(0,Wn.useCallback)(w=>{let C={page:w?.page,search:w?.search},I=ea(m0(w,["page","search"]),i,n);s&&!Ur(C,{page:m,search:p})&&s(C);let A=ea(d,i,n),V=ea(n,i,n);Ur(A,I)||(Ur(I,V)?f("core/views",l,void 0):f("core/views",l,I))},[s,m,p,d,n,i,f,l]),y=(0,Wn.useCallback)(()=>{f("core/views",l,void 0)},[l,f]);return{view:g,isModified:b,updateView:x,resetToDefault:y}}var f0=u(wt(),1),p0=u(Bl(),1);var Rt=u(H(),1),Sl=u(yt(),1);var pm=u(ve(),1),fm={};function Wl(e,t){let r=pm.useRef(fm);return r.current===fm&&(r.current=e(t)),r}function Gl(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var oa=u(ve(),1);function ql(e,t,r,o){let n=Wl(hm).current;return v0(n,e,t,r,o)&&bm(n,[e,t,r,o]),n.callback}function vm(e){let t=Wl(hm).current;return h0(t,e)&&bm(t,e),t.callback}function hm(){return{callback:null,cleanup:null,refs:[]}}function v0(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function h0(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function bm(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{for(let n=0;n=e}function Ul(e){if(!wm.isValidElement(e))return null;let t=e,r=t.props;return(xm(19)?r?.ref:t.ref)??null}function qn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function ym(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function Sm(e,t){return typeof e=="function"?e(t):e}function Cm(e,t){return typeof e=="function"?e(t):e}var Yn={};function ra(e,t,r,o,n){let i={...Yl(e,Yn)};return t&&(i=Un(i,t)),r&&(i=Un(i,r)),o&&(i=Un(i,o)),n&&(i=Un(i,n)),i}function Tm(e){if(e.length===0)return Yn;if(e.length===1)return Yl(e[0],Yn);let t={...Yl(e[0],Yn)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function Em(e){return typeof e=="function"}function Yl(e,t){return Em(e)?e(t):e??Yn}function w0(e,t){return t?e?r=>{if(S0(r)){let n=r;y0(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function y0(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function $l(e,t){return t?e?t+" "+e:t:e}function S0(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var C0=Object.freeze([]),Yr=Object.freeze({});var Kl=u(ve(),1);function Pm(e,t,r={}){let o=t.render,n=T0(t,r);if(r.enabled===!1)return null;let i=r.state??Yr;return E0(e,o,n,i)}function T0(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Yr,ref:a,props:s,stateAttributesMapping:l,enabled:c=!0}=t,f=c?Sm(r,i):void 0,d=c?Cm(o,i):void 0,m=c?ym(i,l):Yr,p=c?qn(m,Array.isArray(s)?Tm(s):s)??Yr:Yr;return typeof document<"u"&&(c?Array.isArray(a)?p.ref=vm([p.ref,Ul(n),...a]):p.ref=ql(p.ref,Ul(n),a):ql(null,null)),c?(f!==void 0&&(p.className=$l(p.className,f)),d!==void 0&&(p.style=qn(p.style,d)),p):Yr}function E0(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=ra(r,t.props);return n.ref=r.ref,oa.cloneElement(t,n)}if(e&&typeof e=="string")return P0(e,r);throw new Error(Gl(8))}function P0(e,t){return e==="button"?(0,Kl.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Kl.createElement)("img",{alt:"",...t,key:t.key}):oa.createElement(e,t)}function Nm(e){return Pm(e.defaultTagName??"div",e,e)}function Dm(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{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,$a.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});Um.displayName="DataViewsContext";var K=Um;var Ir=u(G(),1);var Io=u(G(),1),ci=u(q(),1),Ft=u(H(),1),mc=u(ac(),1);var Km=u(q(),1),Zm=u(G(),1),Xm=u(R(),1);function no({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),c=n?.getValue?.({item:r})||(0,Zm.__)("(no title)");return(0,Xm.jsx)(Km.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":c,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(f=>s!==f):[...e,s])},...a})}var Oo=u(q(),1),ef=u(G(),1),en=u(H(),1);var tf=u(wt(),1),sc=u(yt(),1);var Qm=u(nc(),1),{lock:KT,unlock:ee}=(0,Qm.__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/dataviews");var xe=u(R(),1),{Menu:Po,kebabCase:B0}=ee(Oo.privateApis);function j0({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,xe.jsx)(Oo.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function H0({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,xe.jsx)(Po.Item,{disabled:e.disabled,onClick:t,children:(0,xe.jsx)(Po.ItemLabel,{children:o})})}function Ao({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,xe.jsx)(Oo.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${B0(e.id)}`,children:(0,xe.jsx)(e.RenderModal,{items:t,closeModal:r})})}function lc({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,en.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,xe.jsx)(H0,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,xe.jsxs)(Po.Group,{children:[a(n),n.length>0&&i.length>0&&(0,xe.jsx)(Po.Separator,{}),a(i)]})}function tn({item:e,actions:t,isCompact:r}){let o=(0,tf.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,en.useMemo)(()=>{let s=t.filter(c=>!c.isEligible||c.isEligible(e));return{primaryActions:s.filter(c=>c.isPrimary),eligibleActions:s}},[t,e]),a=(0,sc.useViewportMatch)("medium","<");return r?(0,xe.jsx)(Jm,{item:e,actions:i,isSmall:!0,registry:o}):(0,xe.jsxs)(L,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,xe.jsx)(uc,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function uc({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,en.useState)(null);return(0,sc.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,xe.jsxs)(xe.Fragment,{children:[t.map(s=>(0,xe.jsx)(j0,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,xe.jsx)(Ao,{action:n,items:[e],closeModal:()=>i(null)})]})}var rn=u(q(),1),Ka=u(G(),1),gt=u(H(),1),af=u(wt(),1);var cc=u(yt(),1);var io=u(G(),1);function rf(e,t,r){return e>0?(0,io.sprintf)((0,io._n)("%d Item selected","%d Items selected",e),e):r>t?(0,io.sprintf)((0,io._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,io.sprintf)((0,io._n)("%d Item","%d Items",t),t)}var Ke=u(R(),1);function z0({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,gt.useState)(!1);return(0,Ke.jsxs)(Ke.Fragment,{children:[(0,Ke.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,Ke.jsx)(Ao,{action:e,items:t,closeModal:()=>n(!1)})]})}function Za(e,t){return(0,gt.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function on(e,t){return(0,gt.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function ui({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,gt.useMemo)(()=>r.filter(l=>o.some(c=>c.supportsBulk&&(!c.isEligible||c.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,Ke.jsx)(rn.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,Ka.__)("Deselect all"):(0,Ka.__)("Select all")})}function of({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,cc.useViewportMatch)("medium","<")?(0,Ke.jsx)(rn.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,Ke.jsx)(rn.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var sf=[];function W0({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,af.useRegistry)(),i=(0,gt.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,Ke.jsx)(z0,{action:e,items:i,ActionTriggerComponent:of},e.id):(0,Ke.jsx)(of,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function nf(e,t,r,o,n,i,a,s,l,c){let f=rf(o.length,e.length,c.totalItems);return(0,Ke.jsxs)(L,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,Ke.jsx)(ui,{selection:o,onChangeSelection:l,data:e,actions:t,getItemId:r}),(0,Ke.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,Ke.jsxs)(L,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(d=>(0,Ke.jsx)(W0,{action:d,selectedItems:i,actionInProgress:a,setActionInProgress:s},d.id)),i.length>0&&(0,Ke.jsx)(rn.Button,{icon:Xn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Ka.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{l(sf)}})]})]})}function G0({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,s]=(0,gt.useState)(null),l=(0,gt.useRef)(null),c=(0,cc.useViewportMatch)("medium","<"),f=(0,gt.useMemo)(()=>t.filter(g=>g.supportsBulk),[t]),d=(0,gt.useMemo)(()=>o.filter(g=>f.some(b=>!b.isEligible||b.isEligible(g))),[o,f]),m=(0,gt.useMemo)(()=>o.filter(g=>e.includes(n(g))&&d.includes(g)),[e,o,n,d]),p=(0,gt.useMemo)(()=>t.filter(g=>g.supportsBulk&&(!c||g.icon)&&m.some(b=>!g.isEligible||g.isEligible(b))),[t,m,c]);if(a)l.current||(l.current=nf(o,t,n,e,p,m,a,s,r,i));else return l.current&&(l.current=null),nf(o,t,n,e,p,m,a,s,r,i);return l.current}function Xa(){let{data:e,selection:t,actions:r=sf,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,gt.useContext)(K);return(0,Ke.jsx)(G0,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var Pr=u(G(),1);var Or=u(q(),1),ao=u(H(),1);function Qa(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var re=u(R(),1),{Menu:he}=ee(Or.privateApis);function q0({children:e}){return ao.Children.toArray(e).filter(Boolean).map((t,r)=>(0,re.jsxs)(ao.Fragment,{children:[r>0&&(0,re.jsx)(he.Separator,{}),t]},r))}var U0=(0,ao.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:c=!0},f){let d=r.fields??[],m=d?.indexOf(t),p=r.sort?.field===t,g=!1,b=!1,x=!1,y=[],w=o.find(E=>E.id===t),{setIsShowingFilter:C}=(0,ao.useContext)(K);if(!w)return null;g=w.enableHiding!==!1,b=w.enableSorting!==!1;let I=w.header;if(y=!!w.filterBy&&w.filterBy?.operators||[],x=!r.filters?.some(E=>t===E.field)&&!!(w.hasElements||w.Edit)&&w.filterBy!==!1&&!w.filterBy?.isPrimary,!b&&!s&&!g&&!x)return I;let A=Qa(r,o).filter(E=>!d.includes(E.id)),V=(l||c)&&!!A.length,N=(0,Pr.isRTL)();return(0,re.jsxs)(he,{children:[(0,re.jsxs)(he.TriggerButton,{render:(0,re.jsx)(Or.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[I,r.sort&&p&&(0,re.jsx)("span",{"aria-hidden":"true",children:jm[r.sort.direction]})]}),(0,re.jsx)(he.Popover,{style:{minWidth:"240px"},children:(0,re.jsxs)(q0,{children:[b&&(0,re.jsx)(he.Group,{children:Ga.map(E=>{let S=r.sort&&p&&r.sort.direction===E,D=`${t}-${E}`;return(0,re.jsx)(he.RadioItem,{name:"view-table-sorting",value:D,checked:S,onChange:()=>{n({...r,sort:{field:t,direction:E},showLevels:!1})},children:(0,re.jsx)(he.ItemLabel,{children:Ua[E]})},D)})}),x&&(0,re.jsx)(he.Group,{children:(0,re.jsx)(he.Item,{prefix:(0,re.jsx)(Or.Icon,{icon:Jn}),onClick:()=>{a(t),C(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:y[0]}]})},children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Add filter")})})}),(s||g||V)&&w&&(0,re.jsxs)(he.Group,{children:[s&&(0,re.jsx)(he.Item,{prefix:(0,re.jsx)(Or.Icon,{icon:tu}),disabled:N?m>=d.length-1:m<1,onClick:()=>{let E=N?m+1:m-1,S=[...d];S.splice(m,1),S.splice(E,0,t),n({...r,fields:S})},children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Move left")})}),s&&(0,re.jsx)(he.Item,{prefix:(0,re.jsx)(Or.Icon,{icon:ou}),disabled:N?m<1:m>=d.length-1,onClick:()=>{let E=N?m-1:m+1,S=[...d];S.splice(m,1),S.splice(E,0,t),n({...r,fields:S})},children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Move right")})}),l&&!!A.length&&(0,re.jsxs)(he,{children:[(0,re.jsx)(he.SubmenuTriggerItem,{children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Insert left")})}),(0,re.jsx)(he.Popover,{children:A.map(E=>{let S=N?m+1:m;return(0,re.jsx)(he.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),E.id,...d.slice(S)]})},children:(0,re.jsx)(he.ItemLabel,{children:E.label})},E.id)})})]}),c&&!!A.length&&(0,re.jsxs)(he,{children:[(0,re.jsx)(he.SubmenuTriggerItem,{children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Insert right")})}),(0,re.jsx)(he.Popover,{children:A.map(E=>{let S=N?m:m+1;return(0,re.jsx)(he.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,S),E.id,...d.slice(S)]})},children:(0,re.jsx)(he.ItemLabel,{children:E.label})},E.id)})})]}),g&&w&&(0,re.jsx)(he.Item,{prefix:(0,re.jsx)(Or.Icon,{icon:li}),onClick:()=>{i(w),n({...r,fields:d.filter(E=>E!==t)})},children:(0,re.jsx)(he.ItemLabel,{children:(0,Pr.__)("Hide column")})})]})]})})]})}),Y0=U0,nn=Y0;var lf=u(H(),1),dc=u(R(),1);function $0({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function so({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,dc.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,lf.cloneElement)(l,{onClick:c=>{c.stopPropagation(),l.props.onClick&&l.props.onClick(c)},onKeyDown:c=>{(c.key==="Enter"||c.key===""||c.key===" ")&&(c.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(c))}})}let s=$0({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,dc.jsx)("div",{...s,...a,children:i})}var cr=u(R(),1);function K0({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,cr.jsxs)(L,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,cr.jsx)(so,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,cr.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,cr.jsxs)(L,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,cr.jsxs)(so,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,cr.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,cr.jsx)(r.render,{item:e,field:r})]}),n&&(0,cr.jsx)(n.render,{item:e,field:n})]})]})}var Ja=K0;var uf=u(yt(),1),an=u(H(),1),cf=u(G(),1),Z0=e=>(0,cf.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function df({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,an.useState)(!1),n=(0,uf.useDebounce)((0,an.useCallback)(()=>{let i=e.current;i&&o(Z0(i))},[e,o]),200);return(0,an.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function Yt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var lo=u(q(),1),ff=u(G(),1),pf=u(H(),1);var Ht=u(R(),1);function mf({field:e,isVisible:t,onToggleVisibility:r}){return(0,Ht.jsx)(lo.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,Ht.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Ht.jsx)("div",{style:{height:24,width:24},children:t&&(0,Ht.jsx)(lo.Icon,{icon:Zn})}),(0,Ht.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function X0(e){return!!e}function es({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,pf.useContext)(K),n=Qa(t,r);if(!n?.length)return null;let i=r.find(g=>g.id===t.titleField),a=r.find(g=>g.id===t.mediaField),s=r.find(g=>g.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:g})=>X0(g)),c=t.fields??[],f=n.filter(g=>c.includes(g.id)).length,d=l.filter(({isVisibleFlag:g})=>t[g]??!0),m=d.length+f,p=m===1&&d.length===1;return(0,Ht.jsxs)(L,{direction:"column",className:"dataviews-field-control",children:[e&&(0,Ht.jsx)(lo.BaseControl.VisualLabel,{children:(0,ff.__)("Properties")}),(0,Ht.jsx)(L,{direction:"column",className:"dataviews-view-config__properties",children:(0,Ht.jsxs)(lo.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:g,isVisibleFlag:b})=>{let x=t[b]??!0,y=p&&x?{...g,enableHiding:!1}:g;return(0,Ht.jsx)(mf,{field:y,isVisible:x,onToggleVisibility:()=>{o({...t,[b]:!x})}},g.id)}),n.map(g=>{let b=c.includes(g.id),x=m===1&&b?{...g,enableHiding:!1}:g;return(0,Ht.jsx)(mf,{field:x,isVisible:b,onToggleVisibility:()=>{o({...t,fields:b?c.filter(y=>y!==g.id):[...c,g.id]})}},g.id)})]})})]})}var X=u(R(),1);function Q0({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,X.jsx)("div",{className:i,children:(0,X.jsx)(n.render,{item:e,field:n})})}function gf({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:c,selection:f,getItemId:d,isItemClickable:m,onClickItem:p,renderItemLink:g,onChangeSelection:b,isActionsColumnSticky:x,posinset:y}){let{paginationInfo:w}=(0,Ft.useContext)(K),C=Za(o,t),I=C&&f.includes(i),{showTitle:A=!0,showMedia:V=!0,showDescription:N=!0,infiniteScrollEnabled:E}=a,S=(0,Ft.useRef)(!1),D=a.fields??[],M=s&&A||l&&V||c&&N;return(0,X.jsxs)("tr",{className:Y("dataviews-view-table__row",{"is-selected":C&&I,"has-bulk-actions":C}),onTouchStart:()=>{S.current=!0},"aria-setsize":E?w.totalItems:void 0,"aria-posinset":y,role:E?"article":void 0,onMouseDown:T=>{let h=(0,mc.isAppleOS)()?T.metaKey:T.ctrlKey;T.button===0&&h&&window.navigator.userAgent.toLowerCase().includes("firefox")&&T?.preventDefault()},onClick:T=>{if(!C)return;((0,mc.isAppleOS)()?T.metaKey:T.ctrlKey)&&!S.current&&document.getSelection()?.type!=="Range"&&b(f.includes(i)?f.filter(_=>i!==_):[...f,i])},children:[e&&(0,X.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,X.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,X.jsx)(no,{item:t,selection:f,onChangeSelection:b,getItemId:d,titleField:s,disabled:!C})})}),M&&(0,X.jsx)("td",{children:(0,X.jsx)(Ja,{item:t,level:r,titleField:A?s:void 0,mediaField:V?l:void 0,descriptionField:N?c:void 0,isItemClickable:m,onClickItem:p,renderItemLink:g})}),D.map(T=>{let{width:h,maxWidth:_,minWidth:O,align:v}=a.layout?.styles?.[T]??{};return(0,X.jsx)("td",{style:{width:h,maxWidth:_,minWidth:O},children:(0,X.jsx)(Q0,{fields:n,item:t,column:T,align:v})},T)}),!!o?.length&&(0,X.jsx)("td",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":x}),onClick:T=>T.stopPropagation(),children:(0,X.jsx)(tn,{item:t,actions:o})})]})}function J0({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:c,onClickItem:f,isItemClickable:d,renderItemLink:m,view:p,className:g,empty:b}){let{containerRef:x}=(0,Ft.useContext)(K),y=(0,Ft.useRef)(new Map),w=(0,Ft.useRef)(),[C,I]=(0,Ft.useState)(),A=on(e,t),[V,N]=(0,Ft.useState)(null);(0,Ft.useEffect)(()=>{w.current&&(w.current.focus(),w.current=void 0)});let E=(0,Ft.useId)(),S=df({scrollContainerRef:x,enabled:!!e?.length});if(C){w.current=C,I(void 0);return}let D=$=>{let ke=y.current.get($.id),et=ke?y.current.get(ke.fallback):void 0;I(et?.node)},M=$=>{$.preventDefault(),$.stopPropagation();let ke={getBoundingClientRect:()=>({x:$.clientX,y:$.clientY,top:$.clientY,left:$.clientX,right:$.clientX,bottom:$.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{N(ke)})},T=!!t?.length,h=r.find($=>$.id===p.titleField),_=r.find($=>$.id===p.mediaField),O=r.find($=>$.id===p.descriptionField),v=p.groupBy?.field?r.find($=>$.id===p.groupBy?.field):null,k=v?Yt(t,v):null,{showTitle:F=!0,showMedia:P=!0,showDescription:W=!0}=p,Z=h&&F||_&&P||O&&W,Je=p.fields??[],it=($,ke)=>et=>{et?y.current.set($,{node:et,fallback:Je[ke>0?ke-1:1]}):y.current.delete($)},ge=p.infiniteScrollEnabled&&!k,Ie=(0,Io.isRTL)();return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)("table",{className:Y("dataviews-view-table",g,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":A}),"aria-busy":i,"aria-describedby":E,role:ge?"feed":void 0,children:[(0,X.jsxs)("colgroup",{children:[A&&(0,X.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),Z&&(0,X.jsx)("col",{className:"dataviews-view-table__col-first-data"}),Je.map(($,ke)=>(0,X.jsx)("col",{className:Y(`dataviews-view-table__col-${$}`,{"dataviews-view-table__col-first-data":!Z&&ke===0})},`col-${$}`)),!!e?.length&&(0,X.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),V&&(0,X.jsx)(ci.Popover,{anchor:V,onClose:()=>N(null),placement:"bottom-start",children:(0,X.jsx)(es,{showLabel:!1})}),(0,X.jsx)("thead",{onContextMenu:M,children:(0,X.jsxs)("tr",{className:"dataviews-view-table__row",children:[A&&(0,X.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:M,children:(0,X.jsx)(ui,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),Z&&(0,X.jsx)("th",{scope:"col",children:h&&(0,X.jsx)(nn,{ref:it(h.id,0),fieldId:h.id,view:p,fields:r,onChangeView:a,onHide:D,setOpenedFilter:c,canMove:!1,canInsertLeft:Ie?p.layout?.enableMoving??!0:!1,canInsertRight:Ie?!1:p.layout?.enableMoving??!0})}),Je.map(($,ke)=>{let{width:et,maxWidth:tr,minWidth:qr,align:Zo}=p.layout?.styles?.[$]??{},To=p.layout?.enableMoving??!0;return(0,X.jsx)("th",{style:{width:et,maxWidth:tr,minWidth:qr,textAlign:Zo},"aria-sort":p.sort?.direction&&p.sort?.field===$?qa[p.sort.direction]:void 0,scope:"col",children:(0,X.jsx)(nn,{ref:it($,ke),fieldId:$,view:p,fields:r,onChangeView:a,onHide:D,setOpenedFilter:c,canMove:To,canInsertLeft:To,canInsertRight:To})},$)}),!!e?.length&&(0,X.jsx)("th",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!S}),children:(0,X.jsx)("span",{className:"dataviews-view-table-header",children:(0,Io.__)("Actions")})})]})}),T&&v&&k?Array.from(k.entries()).map(([$,ke])=>(0,X.jsxs)("tbody",{children:[(0,X.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,X.jsx)("td",{colSpan:Je.length+(Z?1:0)+(A?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?$:(0,Io.sprintf)((0,Io.__)("%1$s: %2$s"),v.label,$)})}),ke.map((et,tr)=>(0,X.jsx)(gf,{item:et,level:p.showLevels&&typeof n=="function"?n(et):void 0,hasBulkActions:A,actions:e,fields:r,id:o(et)||tr.toString(),view:p,titleField:h,mediaField:_,descriptionField:O,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S},o(et)))]},`group-${$}`)):(0,X.jsx)("tbody",{children:T&&t.map(($,ke)=>(0,X.jsx)(gf,{item:$,level:p.showLevels&&typeof n=="function"?n($):void 0,hasBulkActions:A,actions:e,fields:r,id:o($)||ke.toString(),view:p,titleField:h,mediaField:_,descriptionField:O,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!S,posinset:ge?ke+1:void 0},o($)))})]}),(0,X.jsxs)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!T&&!i}),id:E,children:[!T&&(i?(0,X.jsx)("p",{children:(0,X.jsx)(ci.Spinner,{})}):b),T&&i&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(ci.Spinner,{})})]})]})}var vf=J0;var pc=u(q(),1),os=u(G(),1);var zt=u(q(),1);var di=u(G(),1),bf=u(yt(),1),_f=u(ac(),1),rs=u(H(),1);var ex=u(q(),1),tx=u(G(),1),ts=u(H(),1);var rx=u(R(),1),ox=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],nx=ox[2].value;function hf(){let e=(0,ts.useContext)(K),t=e.view;return(0,ts.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??nx,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var de=u(R(),1),{Badge:ix}=ee(zt.privateApis);function ax(e,t){let r=[];for(let o=0,n=e.length;o{if(y.onClickCapture?.(v),(0,_f.isAppleOS)()?v.metaKey:v.ctrlKey){if(v.stopPropagation(),v.preventDefault(),!V)return;o(r.includes(N)?r.filter(k=>N!==k):[...r,N])}},children:[(0,de.jsx)(so,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:Y("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!M}),..._,children:T}),b&&(0,de.jsx)(no,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:d,disabled:!V}),!!c?.length&&(0,de.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,de.jsx)(tn,{item:l,actions:c,isCompact:!0})}),C&&(0,de.jsx)("div",{className:"dataviews-view-grid__title",children:(0,de.jsx)(so,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...O,title:d?.getValueFormatted({item:l,field:d})||void 0,children:h})}),(0,de.jsxs)(L,{direction:"column",gap:"xs",children:[A&&m?.render&&(0,de.jsx)(m.render,{item:l,field:m}),!!g?.length&&(0,de.jsx)(L,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:g.map(v=>(0,de.jsx)(ix,{className:"dataviews-view-grid__field-value",children:(0,de.jsx)(v.render,{item:l,field:v})},v.id))}),!!p?.length&&(0,de.jsx)(L,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(v=>(0,de.jsx)(zt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,de.jsxs)(de.Fragment,{children:[(0,de.jsx)(zt.Tooltip,{text:v.label,children:(0,de.jsx)(zt.FlexItem,{className:"dataviews-view-grid__field-name",children:v.header})}),(0,de.jsx)(zt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,de.jsx)(v.render,{item:l,field:v})})]})},v.id))})]})]})});function fc({data:e,isInfiniteScroll:t,className:r,isLoading:o,view:n,fields:i,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:c,renderItemLink:f,getItemId:d,actions:m}){let{paginationInfo:p,resizeObserverRef:g}=(0,rs.useContext)(K),b=hf(),x=on(m,e),y=i.find(S=>S.id===n?.titleField),w=i.find(S=>S.id===n?.mediaField),C=i.find(S=>S.id===n?.descriptionField),I=n.fields??[],{regularFields:A,badgeFields:V}=I.reduce((S,D)=>{let M=i.find(h=>h.id===D);if(!M)return S;let T=n.layout?.badgeFields?.includes(D)?"badgeFields":"regularFields";return S[T].push(M),S},{regularFields:[],badgeFields:[]}),N="900px",E=Math.ceil(e.length/b);return(0,de.jsx)(zt.Composite,{role:t?"feed":"grid",className:Y("dataviews-view-grid",r),focusWrap:!0,"aria-busy":o,"aria-rowcount":t?void 0:E,ref:g,children:ax(e,b).map((S,D)=>(0,de.jsx)(zt.Composite.Row,{render:(0,de.jsx)("div",{role:"row","aria-rowindex":D+1,"aria-label":(0,di.sprintf)((0,di.__)("Row %d"),D+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${b}, minmax(0, 1fr) )`}}),children:S.map((M,T)=>{let h=D*b+T;return(0,de.jsx)(zt.Composite.Item,{render:_=>(0,de.jsx)(sx,{..._,role:t?"article":"gridcell","aria-setsize":t?p.totalItems:void 0,"aria-posinset":t?h+1:void 0,view:n,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:c,renderItemLink:f,getItemId:d,item:M,actions:m,mediaField:w,titleField:y,descriptionField:C,regularFields:A,badgeFields:V,hasBulkActions:x,config:{sizes:N}})},d(M))})},D))})}var Tt=u(R(),1);function lx({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:c,view:f,className:d,empty:m}){let p=!!t?.length,g=f.groupBy?.field?r.find(w=>w.id===f.groupBy?.field):null,b=g?Yt(t,g):null,x=f.infiniteScrollEnabled&&!b,y={className:d,isLoading:n,view:f,fields:r,selection:c,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,Tt.jsxs)(Tt.Fragment,{children:[p&&g&&b&&(0,Tt.jsx)(L,{direction:"column",gap:"lg",children:Array.from(b.entries()).map(([w,C])=>(0,Tt.jsxs)(L,{direction:"column",gap:"sm",children:[(0,Tt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?w:(0,os.sprintf)((0,os.__)("%1$s: %2$s"),g.label,w)}),(0,Tt.jsx)(fc,{...y,data:C,isInfiniteScroll:!1})]},w))}),p&&!b&&(0,Tt.jsx)(fc,{...y,data:t,isInfiniteScroll:!!x}),!p&&(0,Tt.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,Tt.jsx)("p",{children:(0,Tt.jsx)(pc.Spinner,{})}):m}),p&&n&&(0,Tt.jsx)("p",{className:"dataviews-loading-more",children:(0,Tt.jsx)(pc.Spinner,{})})]})}var xf=lx;var ns=u(yt(),1),Ze=u(q(),1),Ue=u(H(),1),mi=u(G(),1);var bc=u(wt(),1);var U=u(R(),1),{Menu:gc}=ee(Ze.privateApis);function vc(e){return`${e}-item-wrapper`}function ux(e,t){return`${e}-primary-action-${t}`}function hc(e){return`${e}-dropdown`}function cx({idPrefix:e,primaryAction:t,item:r}){let o=(0,bc.useRegistry)(),[n,i]=(0,Ue.useState)(!1),a=ux(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(Ze.Composite.Item,{id:a,render:(0,U.jsx)(Ze.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,U.jsx)(Ao,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(Ze.Composite.Item,{id:a,render:(0,U.jsx)(Ze.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function wf({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:c,onDropdownTriggerKeyDown:f,posinset:d}){let{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:b}=e,x=(0,Ue.useRef)(null),y=`${r}-label`,w=`${r}-description`,C=(0,bc.useRegistry)(),[I,A]=(0,Ue.useState)(!1),[V,N]=(0,Ue.useState)(null),E=({type:v})=>{A(v==="mouseenter")},{paginationInfo:S}=(0,Ue.useContext)(K);(0,Ue.useEffect)(()=>{o&&x.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:D,eligibleActions:M}=(0,Ue.useMemo)(()=>{let v=t.filter(F=>!F.isEligible||F.isEligible(n));return{primaryAction:v.filter(F=>F.isPrimary)[0],eligibleActions:v}},[t,n]),T=D&&t.length===1,h=p&&a?.render?(0,U.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,U.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,_=m&&i?.render?(0,U.jsx)(i.render,{item:n,field:i}):null,O=M?.length>0&&(0,U.jsxs)(L,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[D&&(0,U.jsx)(cx,{idPrefix:r,primaryAction:D,item:n}),!T&&(0,U.jsxs)("div",{role:"gridcell",children:[(0,U.jsxs)(gc,{placement:"bottom-end",children:[(0,U.jsx)(gc.TriggerButton,{render:(0,U.jsx)(Ze.Composite.Item,{id:hc(r),render:(0,U.jsx)(Ze.Button,{size:"small",icon:oi,label:(0,mi.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:f})})}),(0,U.jsx)(gc.Popover,{children:(0,U.jsx)(lc,{actions:M,item:n,registry:C,setActiveModalAction:N})})]}),!!V&&(0,U.jsx)(Ao,{action:V,items:[n],closeModal:()=>N(null)})]})]});return(0,U.jsx)(Ze.Composite.Row,{ref:x,render:(0,U.jsx)("div",{"aria-posinset":d,"aria-setsize":b?S.totalItems:void 0}),role:b?"article":"row",className:Y({"is-selected":o,"is-hovered":I}),onMouseEnter:E,onMouseLeave:E,children:(0,U.jsxs)(L,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(Ze.Composite.Item,{id:vc(r),"aria-pressed":o,"aria-labelledby":y,"aria-describedby":w,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,U.jsxs)(L,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[h,(0,U.jsxs)(L,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,U.jsxs)(L,{direction:"row",align:"center",children:[(0,U.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:y,children:_}),O]}),g&&s?.render&&(0,U.jsx)("div",{className:"dataviews-view-list__field",children:(0,U.jsx)(s.render,{item:n,field:s})}),(0,U.jsx)("div",{className:"dataviews-view-list__fields",id:w,children:c.map(v=>(0,U.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,U.jsx)(Ze.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:v.label}),(0,U.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,U.jsx)(v.render,{item:n,field:v})})]},v.id))})]})]})]})})}function dx(e){return!!e}function _c(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:c,empty:f}=e,d=(0,ns.useInstanceId)(_c,"view-list"),m=r?.findLast(_=>s.includes(n(_))),p=o.find(_=>_.id===l.titleField),g=o.find(_=>_.id===l.mediaField),b=o.find(_=>_.id===l.descriptionField),x=(l?.fields??[]).map(_=>o.find(O=>_===O.id)).filter(dx),y=_=>a([n(_)]),w=(0,Ue.useCallback)(_=>`${d}-${n(_)}`,[d,n]),C=(0,Ue.useCallback)((_,O)=>O.startsWith(w(_)),[w]),[I,A]=(0,Ue.useState)(void 0);(0,Ue.useEffect)(()=>{m&&A(vc(w(m)))},[m,w]);let V=r.findIndex(_=>C(_,I??"")),N=(0,ns.usePrevious)(V),E=V!==-1,S=(0,Ue.useCallback)((_,O)=>{let v=Math.min(r.length-1,Math.max(0,_));if(!r[v])return;let k=w(r[v]),F=O(k);A(F),document.getElementById(F)?.focus()},[r,w]);(0,Ue.useEffect)(()=>{!E&&(N!==void 0&&N!==-1)&&S(N,vc)},[E,S,N]);let D=(0,Ue.useCallback)(_=>{_.key==="ArrowDown"&&(_.preventDefault(),S(V+1,hc)),_.key==="ArrowUp"&&(_.preventDefault(),S(V-1,hc))},[S,V]),M=r?.length;if(!M)return(0,U.jsx)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!M&&!i}),children:!M&&(i?(0,U.jsx)("p",{children:(0,U.jsx)(Ze.Spinner,{})}):f)});let T=l.groupBy?.field?o.find(_=>_.id===l.groupBy?.field):null,h=T?Yt(r,T):null;return M&&T&&h?(0,U.jsx)(Ze.Composite,{id:`${d}`,render:(0,U.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:I,setActiveId:A,children:(0,U.jsx)(L,{direction:"column",gap:"lg",className:Y("dataviews-view-list",c),children:Array.from(h.entries()).map(([_,O])=>(0,U.jsxs)(L,{direction:"column",gap:"sm",children:[(0,U.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?_:(0,mi.sprintf)((0,mi.__)("%1$s: %2$s"),T.label,_)}),O.map(v=>{let k=w(v);return(0,U.jsx)(wf,{view:l,idPrefix:k,actions:t,item:v,isSelected:v===m,onSelect:y,mediaField:g,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:D},k)})]},_))})}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(Ze.Composite,{id:d,render:(0,U.jsx)("div",{}),className:Y("dataviews-view-list",c,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density)}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:I,setActiveId:A,children:r.map((_,O)=>{let v=w(_);return(0,U.jsx)(wf,{view:l,idPrefix:v,actions:t,item:_,isSelected:_===m,onSelect:y,mediaField:g,titleField:p,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:D,posinset:l.infiniteScrollEnabled?O+1:void 0},v)})}),M&&i&&(0,U.jsx)("p",{className:"dataviews-loading-more",children:(0,U.jsx)(Ze.Spinner,{})})]})}var wc=u(q(),1);var is=u(G(),1),yf=u(H(),1);var sn=u(R(),1);function Sf({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,yf.createInterpolateElement)((0,is.sprintf)((0,is.__)("%s: "),r.label).trim(),{groupName:(0,sn.jsx)(r.render,{item:t[0],field:r})}):(0,sn.jsx)(r.render,{item:t[0],field:r});return(0,sn.jsxs)(L,{direction:"column",className:"dataviews-view-activity__group",children:[(0,sn.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var Cf=u(q(),1),Vo=u(H(),1),Tf=u(wt(),1),Ef=u(yt(),1);var ze=u(R(),1);function mx(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:c,renderItemLink:f,isItemClickable:d}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:b}=t,x=(0,Vo.useRef)(null),y=(0,Tf.useRegistry)(),{paginationInfo:w}=(0,Vo.useContext)(K),{primaryActions:C,eligibleActions:I}=(0,Vo.useMemo)(()=>{let M=r.filter(h=>!h.isEligible||h.isEligible(o));return{primaryActions:M.filter(h=>h.isPrimary),eligibleActions:M}},[r,o]),A=(0,Ef.useViewportMatch)("medium","<"),V=t.layout?.density??"balanced",N=p&&V!=="compact"&&i?.render?(0,ze.jsx)(i.render,{item:o,field:i,config:{sizes:V==="comfortable"?"32px":"24px"}}):null,E=(0,ze.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:N||(0,ze.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),S=m&&n?.render?(0,ze.jsx)(n.render,{item:o,field:n}):null,D=(0,Vo.useMemo)(()=>V==="comfortable"?"md":"sm",[V]);return(0,ze.jsx)("div",{ref:x,role:b?"article":void 0,"aria-posinset":l,"aria-setsize":b?w.totalItems:void 0,className:Y("dataviews-view-activity__item",V==="compact"&&"is-compact",V==="balanced"&&"is-balanced",V==="comfortable"&&"is-comfortable"),children:(0,ze.jsxs)(L,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,ze.jsx)(L,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:E}),(0,ze.jsxs)(L,{direction:"column",gap:D,align:"flex-start",className:"dataviews-view-activity__item-content",children:[S&&(0,ze.jsx)(so,{item:o,isItemClickable:d,onClickItem:c,renderItemLink:f,className:"dataviews-view-activity__item-title",children:S}),g&&a&&(0,ze.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,ze.jsx)(a.render,{item:o,field:a})}),(0,ze.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(M=>(0,ze.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,ze.jsx)(Cf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:M.label}),(0,ze.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,ze.jsx)(M.render,{item:o,field:M})})]},M.id))}),!!C?.length&&(0,ze.jsx)(uc,{item:o,actions:C,registry:y,buttonVariant:"secondary"})]}),(C.length0)&&(0,ze.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,ze.jsx)(tn,{item:o,actions:I,isCompact:!0})})]})})}var Pf=mx;var Of=u(ve(),1);function fx(e){return!!e}function xc(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(c=>c.id===n.titleField),a=r.find(c=>c.id===n.mediaField),s=r.find(c=>c.id===n.descriptionField),l=(n?.fields??[]).map(c=>r.find(f=>c===f.id)).filter(fx);return t.map((c,f)=>(0,Of.createElement)(Pf,{...e,key:o(c),item:c,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var Et=u(R(),1);function Af(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=r?.length;if(!s)return(0,Et.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!s&&!n}),children:!s&&(n?(0,Et.jsx)("p",{children:(0,Et.jsx)(wc.Spinner,{})}):t)});let l=Y("dataviews-view-activity",a),c=i.groupBy?.field?o.find(m=>m.id===i.groupBy?.field):null,f=c?Yt(r,c):null,d=f?Array.from(f.entries()):[];return s&&c&&f?(0,Et.jsx)(L,{direction:"column",gap:"sm",className:l,children:d.map(([m,p])=>(0,Et.jsx)(Sf,{groupName:m,groupData:p,groupField:c,showLabel:i.groupBy?.showLabel!==!1,children:(0,Et.jsx)(xc,{...e,data:p})},m))}):(0,Et.jsxs)(Et.Fragment,{children:[(0,Et.jsx)("div",{className:l,role:i.infiniteScrollEnabled?"feed":void 0,children:(0,Et.jsx)(xc,{...e})}),s&&n&&(0,Et.jsx)("p",{className:"dataviews-loading-more",children:(0,Et.jsx)(wc.Spinner,{})})]})}var Lt=u(q(),1),pi=u(G(),1),Mf=u(yt(),1),Ff=u(H(),1);var Vf=u(q(),1),px=u(wt(),1),as=u(H(),1);var gx=u(G(),1);var fi=u(q(),1),ln=u(H(),1),Wt=u(G(),1);var Ar=u(R(),1);function yc(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,ln.useContext)(K);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Wt.sprintf)((0,Wt.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,Ar.jsxs)(L,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,Ar.jsx)(L,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,ln.createInterpolateElement)((0,Wt.sprintf)((0,Wt._x)("
      Page
      %1$s
      of %2$d
      ","paging"),"",o),{div:(0,Ar.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,Ar.jsx)(fi.SelectControl,{"aria-label":(0,Wt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,Ar.jsxs)(L,{direction:"row",gap:"xs",align:"center",children:[(0,Ar.jsx)(fi.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Wt.__)("Previous page"),icon:(0,Wt.isRTL)()?Ia:Ma,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,Ar.jsx)(fi.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Wt.__)("Next page"),icon:(0,Wt.isRTL)()?Ma:Ia,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var If=(0,ln.memo)(yc);var Rf=u(R(),1);function ss(e){return(0,as.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var kf=u(H(),1);var Nf=u(R(),1),Sc=(0,kf.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,Nf.jsx)("div",{ref:o,className:Y("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var te=u(R(),1),{Badge:vx}=ee(Lt.privateApis);function Df({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:c,badgeFields:f,config:d,posinset:m,setsize:p}){let{showTitle:g=!0,showMedia:b=!0,showDescription:x=!0}=e,y=n(i),w=r.includes(y),C=a?.render?(0,te.jsx)(a.render,{item:i,field:a,config:d}):null,I=g&&s?.render?(0,te.jsx)(s.render,{item:i,field:s}):null;return(0,te.jsxs)(Lt.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,pi.__)("(no title)"):void 0,render:({children:A,...V})=>(0,te.jsx)(L,{direction:"column",children:A,...V}),role:"option","aria-posinset":m,"aria-setsize":p,className:Y("dataviews-view-picker-grid__card",{"is-selected":w}),"aria-selected":w,onClick:()=>{if(w)o(r.filter(A=>y!==A));else{let A=t?[...r,y]:[y];o(A)}},children:[b&&C&&(0,te.jsx)("div",{className:"dataviews-view-picker-grid__media",children:C}),b&&C&&(0,te.jsx)(no,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),g&&(0,te.jsx)(L,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,te.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:I})}),(0,te.jsxs)(L,{direction:"column",gap:"xs",children:[x&&l?.render&&(0,te.jsx)(l.render,{item:i,field:l}),!!f?.length&&(0,te.jsx)(L,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:f.map(A=>(0,te.jsx)(vx,{className:"dataviews-view-picker-grid__field-value",children:(0,te.jsx)(A.render,{item:i,field:A})},A.id))}),!!c?.length&&(0,te.jsx)(L,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:c.map(A=>(0,te.jsx)(Lt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(Lt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:A.header}),(0,te.jsx)(Lt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,te.jsx)(A.render,{item:i,field:A})})]})},A.id))})]})]},y)}function Lf({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,Mf.useInstanceId)(Lf,"dataviews-view-picker-grid-group__header");return(0,te.jsxs)(L,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,te.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,pi.sprintf)((0,pi.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function hx({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:c}){let{resizeObserverRef:f,paginationInfo:d,itemListLabel:m}=(0,Ff.useContext)(K),p=r.find(h=>h.id===s?.titleField),g=r.find(h=>h.id===s?.mediaField),b=r.find(h=>h.id===s?.descriptionField),x=s.fields??[],{regularFields:y,badgeFields:w}=x.reduce((h,_)=>{let O=r.find(k=>k.id===_);if(!O)return h;let v=s.layout?.badgeFields?.includes(_)?"badgeFields":"regularFields";return h[v].push(O),h},{regularFields:[],badgeFields:[]}),C=!!t?.length,I=s.layout?.previewSize,A=ss(e),V="900px",N=s.groupBy?.field?r.find(h=>h.id===s.groupBy?.field):null,E=N?Yt(t,N):null,S=s.infiniteScrollEnabled&&!E,D=s?.page??1,M=s?.perPage??0,T=S?d?.totalItems:void 0;return(0,te.jsxs)(te.Fragment,{children:[C&&N&&E&&(0,te.jsx)(Lt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,className:Y("dataviews-view-picker-grid",l),"aria-label":m,render:({children:h,..._})=>(0,te.jsx)(L,{direction:"column",gap:"lg",children:h,..._}),children:Array.from(E.entries()).map(([h,_])=>(0,te.jsx)(Lf,{groupName:h,groupField:N,showLabel:s.groupBy?.showLabel!==!1,children:(0,te.jsx)(Sc,{previewSize:I,style:{gridTemplateColumns:I&&`repeat(auto-fill, minmax(${I}px, 1fr))`},"aria-busy":n,ref:f,children:_.map(O=>{let v=(D-1)*M+t.indexOf(O)+1;return(0,te.jsx)(Df,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:O,mediaField:g,titleField:p,descriptionField:b,regularFields:y,badgeFields:w,config:{sizes:V},posinset:v,setsize:T},o(O))})})},h))}),C&&!E&&(0,te.jsx)(Lt.Composite,{render:(0,te.jsx)(Sc,{className:Y("dataviews-view-picker-grid",l),previewSize:I,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":A,"aria-label":m,children:t.map((h,_)=>{let O=S?_+1:void 0;return S||(O=(D-1)*M+_+1),(0,te.jsx)(Df,{view:s,multiselect:A,selection:a,onChangeSelection:i,getItemId:o,item:h,mediaField:g,titleField:p,descriptionField:b,regularFields:y,badgeFields:w,config:{sizes:V},posinset:O,setsize:T},o(h))})}),!C&&(0,te.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,te.jsx)("p",{children:(0,te.jsx)(Lt.Spinner,{})}):c}),C&&n&&(0,te.jsx)("p",{className:"dataviews-loading-more",children:(0,te.jsx)(Lt.Spinner,{})})]})}var Bf=hx;var ls=u(G(),1),Ro=u(q(),1),$t=u(H(),1);var oe=u(R(),1);function bx({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,oe.jsx)("div",{className:i,children:(0,oe.jsx)(n.render,{item:e,field:n})})}function jf({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:c,multiselect:f,posinset:d}){let{paginationInfo:m}=(0,$t.useContext)(K),p=s.includes(r),[g,b]=(0,$t.useState)(!1),{showTitle:x=!0,showMedia:y=!0,showDescription:w=!0,infiniteScrollEnabled:C}=o,I=()=>{b(!0)},A=()=>{b(!1)},V=o.fields??[],N=n&&x||i&&y||a&&w;return(0,oe.jsxs)(Ro.Composite.Item,{render:({children:E,...S})=>(0,oe.jsx)("tr",{className:Y("dataviews-view-table__row",{"is-selected":p,"is-hovered":g}),onMouseEnter:I,onMouseLeave:A,children:E,...S}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":d,role:C?"article":"option",onClick:()=>{if(p)c(s.filter(E=>r!==E));else{let E=f?[...s,r]:[r];c(E)}},children:[(0,oe.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,oe.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,oe.jsx)(no,{item:e,selection:s,onChangeSelection:c,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),N&&(0,oe.jsx)("td",{role:"presentation",children:(0,oe.jsx)(Ja,{item:e,titleField:x?n:void 0,mediaField:y?i:void 0,descriptionField:w?a:void 0,isItemClickable:()=>!1})}),V.map(E=>{let{width:S,maxWidth:D,minWidth:M,align:T}=o.layout?.styles?.[E]??{};return(0,oe.jsx)("td",{style:{width:S,maxWidth:D,minWidth:M},role:"presentation",children:(0,oe.jsx)(bx,{fields:t,item:e,column:E,align:T})},E)})]},r)}function _x({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:c,className:f,empty:d}){let m=(0,$t.useRef)(new Map),p=(0,$t.useRef)(),[g,b]=(0,$t.useState)(),x=ss(e)??!1;(0,$t.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let y=(0,$t.useId)();if(g){p.current=g,b(void 0);return}let w=v=>{let k=m.current.get(v.id),F=k?m.current.get(k.fallback):void 0;b(F?.node)},C=!!t?.length,I=r.find(v=>v.id===c.titleField),A=r.find(v=>v.id===c.mediaField),V=r.find(v=>v.id===c.descriptionField),N=c.groupBy?.field?r.find(v=>v.id===c.groupBy?.field):null,E=N?Yt(t,N):null,{showTitle:S=!0,showMedia:D=!0,showDescription:M=!0}=c,T=I&&S||A&&D||V&&M,h=c.fields??[],_=(v,k)=>F=>{F?m.current.set(v,{node:F,fallback:h[k>0?k-1:1]}):m.current.delete(v)},O=c.infiniteScrollEnabled&&!E;return(0,oe.jsxs)(oe.Fragment,{children:[(0,oe.jsxs)("table",{className:Y("dataviews-view-table","dataviews-view-picker-table",f,{[`has-${c.layout?.density}-density`]:c.layout?.density&&["compact","comfortable"].includes(c.layout.density)}),"aria-busy":n,"aria-describedby":y,role:O?"feed":"listbox",children:[(0,oe.jsx)("thead",{role:"presentation",children:(0,oe.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,oe.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:x&&(0,oe.jsx)(ui,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),T&&(0,oe.jsx)("th",{children:I&&(0,oe.jsx)(nn,{ref:_(I.id,0),fieldId:I.id,view:c,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:!1})}),h.map((v,k)=>{let{width:F,maxWidth:P,minWidth:W,align:Z}=c.layout?.styles?.[v]??{};return(0,oe.jsx)("th",{style:{width:F,maxWidth:P,minWidth:W,textAlign:Z},"aria-sort":c.sort?.direction&&c.sort?.field===v?qa[c.sort.direction]:void 0,scope:"col",children:(0,oe.jsx)(nn,{ref:_(v,k),fieldId:v,view:c,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:c.layout?.enableMoving??!0})},v)})]})}),C&&N&&E?Array.from(E.entries()).map(([v,k])=>(0,oe.jsxs)(Ro.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,oe.jsx)("tbody",{role:"group"}),children:[(0,oe.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,oe.jsx)("td",{colSpan:h.length+(T?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:c.groupBy?.showLabel===!1?v:(0,ls.sprintf)((0,ls.__)("%1$s: %2$s"),N.label,v)})}),k.map((F,P)=>(0,oe.jsx)(jf,{item:F,fields:r,id:o(F)||P.toString(),view:c,titleField:I,mediaField:A,descriptionField:V,selection:s,getItemId:o,onChangeSelection:a,multiselect:x},o(F)))]},`group-${v}`)):(0,oe.jsx)(Ro.Composite,{render:(0,oe.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:C&&t.map((v,k)=>(0,oe.jsx)(jf,{item:v,fields:r,id:o(v)||k.toString(),view:c,titleField:I,mediaField:A,descriptionField:V,selection:s,getItemId:o,onChangeSelection:a,multiselect:x,posinset:k+1},o(v)))})]}),(0,oe.jsxs)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!C&&!n}),id:y,children:[!C&&(n?(0,oe.jsx)("p",{children:(0,oe.jsx)(Ro.Spinner,{})}):d),C&&n&&(0,oe.jsx)("p",{className:"dataviews-loading-more",children:(0,oe.jsx)(Ro.Spinner,{})})]})]})}var Hf=_x;var zf=u(q(),1),Wf=u(G(),1),Gf=u(H(),1);var qf=u(R(),1),xx=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function Cc(){let e=(0,Gf.useContext)(K),t=e.view,r=xx.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,qf.jsx)(zf.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,Wf.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var un=u(q(),1),cn=u(G(),1),Uf=u(H(),1);var dn=u(R(),1);function gi(){let e=(0,Uf.useContext)(K),t=e.view;return(0,dn.jsxs)(un.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,cn.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,dn.jsx)(un.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,cn._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,dn.jsx)(un.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,cn._x)("Balanced","Density option for DataView layout")},"balanced"),(0,dn.jsx)(un.__experimentalToggleGroupControlOption,{value:"compact",label:(0,cn._x)("Compact","Density option for DataView layout")},"compact")]})}var uo=[{type:Jo,label:(0,Ir.__)("Table"),component:vf,icon:da,viewConfigOptions:gi},{type:Ya,label:(0,Ir.__)("Grid"),component:xf,icon:Qo,viewConfigOptions:Cc},{type:zm,label:(0,Ir.__)("List"),component:_c,icon:(0,Ir.isRTL)()?wu:Su,viewConfigOptions:gi},{type:Wm,label:(0,Ir.__)("Activity"),component:Af,icon:Ku,viewConfigOptions:gi},{type:Gm,label:(0,Ir.__)("Grid"),component:Bf,icon:Qo,viewConfigOptions:Cc,isPicker:!0},{type:qm,label:(0,Ir.__)("Table"),component:Hf,icon:da,viewConfigOptions:gi,isPicker:!0}];var En=u(H(),1);var rr=u(q(),1),Lr=u(G(),1),Gs=u(H(),1);var wx=Object.defineProperty,yx=Object.defineProperties,Sx=Object.getOwnPropertyDescriptors,us=Object.getOwnPropertySymbols,$f=Object.prototype.hasOwnProperty,Kf=Object.prototype.propertyIsEnumerable,Yf=(e,t,r)=>t in e?wx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))$f.call(t,r)&&Yf(e,r,t[r]);if(us)for(var r of us(t))Kf.call(t,r)&&Yf(e,r,t[r]);return e},Q=(e,t)=>yx(e,Sx(t)),se=(e,t)=>{var r={};for(var o in e)$f.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&us)for(var o of us(e))t.indexOf(o)<0&&Kf.call(e,o)&&(r[o]=e[o]);return r};var Cx=Object.defineProperty,Tx=Object.defineProperties,Ex=Object.getOwnPropertyDescriptors,cs=Object.getOwnPropertySymbols,Xf=Object.prototype.hasOwnProperty,Qf=Object.prototype.propertyIsEnumerable,Zf=(e,t,r)=>t in e?Cx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,le=(e,t)=>{for(var r in t||(t={}))Xf.call(t,r)&&Zf(e,r,t[r]);if(cs)for(var r of cs(t))Qf.call(t,r)&&Zf(e,r,t[r]);return e},We=(e,t)=>Tx(e,Ex(t)),ds=(e,t)=>{var r={};for(var o in e)Xf.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&cs)for(var o of cs(e))t.indexOf(o)<0&&Qf.call(e,o)&&(r[o]=e[o]);return r};function vi(...e){}function Tc(e,t){if(Px(e)){let r=Ox(t)?t():t;return e(r)}return e}function Px(e){return typeof e=="function"}function Ox(e){return typeof e=="function"}function Bt(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function co(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function hi(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function Ec(e,t){let r=le({},e);for(let o of t)Bt(r,o)&&delete r[o];return r}function Pc(e,t){let r={};for(let o of t)Bt(e,o)&&(r[o]=e[o]);return r}function bi(e){return e}function at(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function Oc(e){return Object.keys(e)}function Ac(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function ko(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function st(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function ne(...e){for(let t of e)if(t!==void 0)return t}var Jf=u(ve(),1);function ep(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function Ax(e){return!e||!(0,Jf.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function tp(e){return Ax(e)?j({},e.props).ref||e.ref:null}function rp(e,t){let r=j({},e);for(let o in t){if(!Bt(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?j(j({},e[i]),t[i]):t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var mo=Ix();function Ix(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function Vr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function No(e,t=!1){let{activeElement:r}=Vr(e);if(!r?.nodeName)return null;if(Ic(r)&&r.contentDocument)return No(r.contentDocument.body,t);if(t){let o=r.getAttribute("aria-activedescendant");if(o){let n=Vr(r).getElementById(o);if(n)return n}}return r}function dr(e,t){return e===t||e.contains(t)}function Ic(e){return e.tagName==="IFRAME"}function Rr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?Vx.indexOf(e.type)!==-1:!1}var Vx=["button","color","file","image","reset","submit"];function Vc(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function Pt(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function _i(e){return e.isContentEditable||Pt(e)}function Rc(e){if(Pt(e))return e.value;if(e.isContentEditable){let t=Vr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function mn(e){let t=0,r=0;if(Pt(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=Vr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&dr(e,o.anchorNode)&&o.focusNode&&dr(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function kc(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function fn(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return fn(e.parentElement)||document.scrollingElement||document.body}function xi(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function Nc(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),c=t(s);return l===c||!l||!c?0:Rx(l,c)?(n>a&&(o=!0),-1):(ni):e}function Rx(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function Dc(){return mo&&!!navigator.maxTouchPoints}function ms(){return mo?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Do(){return mo&&ms()&&/apple/i.test(navigator.vendor)}function Mc(){return mo&&/firefox\//i.test(navigator.userAgent)}function fs(e){return!!(e.currentTarget&&!dr(e.currentTarget,e.target))}function vt(e){return e.target===e.currentTarget}function op(e){let t=e.currentTarget;if(!t)return!1;let r=ms();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function np(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function Mo(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n=We(le({},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",n)),o}function ip(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function Fc(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function ps(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!dr(r,o)}function fo(e,t,r,o){let i=(s=>{if(o){let c=setTimeout(s,o);return()=>clearTimeout(c)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function mr(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(mr(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var we=u(ve(),1),kx=u(ve(),1),Lc=j({},kx),ap=Lc.useId,qO=Lc.useDeferredValue,sp=Lc.useInsertionEffect,Me=mo?we.useLayoutEffect:we.useEffect;function Nx(e){let[t]=(0,we.useState)(e);return t}function cp(e){let t=(0,we.useRef)(e);return Me(()=>{t.current=e}),t}function ie(e){let t=(0,we.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return sp?sp(()=>{t.current=e}):t.current=e,(0,we.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function dp(e){let[t,r]=(0,we.useState)(null);return Me(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function Fe(...e){return(0,we.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)ep(r,t)}},e)}function Kt(e){if(ap){let o=ap();return e||o}let[t,r]=(0,we.useState)(e);return Me(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function mp(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,we.useState)(()=>r(t));return Me(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function fp(e,t,r){let o=Nx(r),[n,i]=(0,we.useState)(o);return(0,we.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let c=a.getAttribute(t);i(c??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function fr(e,t){let r=(0,we.useRef)(!1);(0,we.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,we.useEffect)(()=>()=>{r.current=!1},[])}function pp(e,t){let r=(0,we.useRef)(!1);Me(()=>{if(r.current)return e();r.current=!0},t),Me(()=>()=>{r.current=!1},[])}function gp(){return(0,we.useReducer)(()=>[],[])}function Ge(e){return ie(typeof e=="function"?e:()=>e)}function pr(e,t,r=[]){let o=(0,we.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return Q(j({},e),{wrapElement:o})}function vp(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,we.useMemo)(()=>Object.assign(()=>{},Q(j({},o),{[t]:r})),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}function hp(){return(0,we.useEffect)(()=>{mr("mousemove",Mx,!0),mr("mousedown",gs,!0),mr("mouseup",gs,!0),mr("keydown",gs,!0),mr("scroll",gs,!0)},[]),ie(()=>Bc)}var Bc=!1,lp=0,up=0;function Dx(e){let t=e.movementX||e.screenX-lp,r=e.movementY||e.screenY-up;return lp=e.screenX,up=e.screenY,t||r||!1}function Mx(e){Dx(e)&&(Bc=!0)}function gs(){Bc=!1}var Ot=u(ve(),1),Fo=u(R(),1);function ye(e){let t=Ot.forwardRef((r,o)=>e(Q(j({},r),{ref:o})));return t.displayName=e.displayName||e.name,t}function po(e,t){return Ot.memo(e,t)}function Te(e,t){let r=t,{wrapElement:o,render:n}=r,i=se(r,["wrapElement","render"]),a=Fe(t.ref,tp(n)),s;if(Ot.isValidElement(n)){let l=Q(j({},n.props),{ref:a});s=Ot.cloneElement(n,rp(i,l))}else n?s=n(i):s=(0,Fo.jsx)(e,j({},i));return o?o(s):s}function Ee(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function jt(e=[],t=[]){let r=Ot.createContext(void 0),o=Ot.createContext(void 0),n=()=>Ot.useContext(r),i=(c=!1)=>{let f=Ot.useContext(o),d=n();return c?f:f||d},a=()=>{let c=Ot.useContext(o),f=n();if(!(c&&c===f))return f},s=c=>e.reduceRight((f,d)=>(0,Fo.jsx)(d,Q(j({},c),{children:f})),(0,Fo.jsx)(r.Provider,j({},c)));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:c=>(0,Fo.jsx)(s,Q(j({},c),{children:t.reduceRight((f,d)=>(0,Fo.jsx)(d,Q(j({},c),{children:f})),(0,Fo.jsx)(o.Provider,j({},c)))}))}}var wi=jt(),bp=wi.useContext,QO=wi.useScopedContext,JO=wi.useProviderContext,_p=wi.ContextProvider,xp=wi.ScopedContextProvider;var jc=u(ve(),1),yi=jt([_p],[xp]),vs=yi.useContext,oA=yi.useScopedContext,wp=yi.useProviderContext,pn=yi.ContextProvider,hs=yi.ScopedContextProvider,yp=(0,jc.createContext)(void 0),Sp=(0,jc.createContext)(void 0);var Hc=u(ve(),1),sA=(0,Hc.createContext)(null),lA=(0,Hc.createContext)(null),Si=jt([pn],[hs]),Cp=Si.useContext,uA=Si.useScopedContext,cA=Si.useProviderContext,dA=Si.ContextProvider,mA=Si.ScopedContextProvider;function Lo(e,t){let r=e.__unstableInternals;return at(r,"Invalid store"),r[t]}function At(e,...t){let r=e,o=r,n=Symbol(),i=vi,a=new Set,s=new Set,l=new Set,c=new Set,f=new Set,d=new WeakMap,m=new WeakMap,p=E=>(l.add(E),()=>l.delete(E)),g=()=>{let E=a.size,S=Symbol();a.add(S);let D=()=>{a.delete(S),!a.size&&i()};if(E)return D;let M=Oc(r).map(_=>co(...t.map(O=>{var v;let k=(v=O?.getState)==null?void 0:v.call(O);if(k&&Bt(k,_))return ot(O,[_],F=>{V(_,F[_],!0)})}))),T=[];for(let _ of l)T.push(_());let h=t.map(gn);return i=co(...M,...T,...h),D},b=(E,S,D=c)=>(D.add(S),m.set(S,E),()=>{var M;(M=d.get(S))==null||M(),d.delete(S),m.delete(S),D.delete(S)}),x=(E,S)=>b(E,S),y=(E,S)=>(d.set(S,S(r,r)),b(E,S)),w=(E,S)=>(d.set(S,S(r,o)),b(E,S,f)),C=E=>At(Pc(r,E),N),I=E=>At(Ec(r,E),N),A=()=>r,V=(E,S,D=!1)=>{var M;if(!Bt(r,E))return;let T=Tc(S,r[E]);if(T===r[E])return;if(!D)for(let v of t)(M=v?.setState)==null||M.call(v,E,T);let h=r;r=We(le({},r),{[E]:T});let _=Symbol();n=_,s.add(E);let O=(v,k,F)=>{var P;let W=m.get(v),Z=Je=>F?F.has(Je):Je===E;(!W||W.some(Z))&&((P=d.get(v))==null||P(),d.set(v,v(r,k)))};for(let v of c)O(v,h);queueMicrotask(()=>{if(n!==_)return;let v=r;for(let k of f)O(k,o,s);o=v,s.clear()})},N={getState:A,setState:V,__unstableInternals:{setup:p,init:g,subscribe:x,sync:y,batch:w,pick:C,omit:I}};return N}function rt(e,...t){if(e)return Lo(e,"setup")(...t)}function gn(e,...t){if(e)return Lo(e,"init")(...t)}function vn(e,...t){if(e)return Lo(e,"subscribe")(...t)}function ot(e,...t){if(e)return Lo(e,"sync")(...t)}function go(e,...t){if(e)return Lo(e,"batch")(...t)}function Ci(e,...t){if(e)return Lo(e,"omit")(...t)}function zc(e,...t){if(e)return Lo(e,"pick")(...t)}function Bo(...e){let t=e.reduce((o,n)=>{var i;let a=(i=n?.getState)==null?void 0:i.call(n);return a?Object.assign(o,a):o},{}),r=At(t,...e);return Object.assign({},...e,r)}var gr=u(ve(),1),Tp=u(km(),1),{useSyncExternalStore:Ep}=Tp.default,Pp=()=>()=>{};function hn(e,t=bi){let r=gr.useCallback(n=>e?vn(e,null,n):Pp(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&Bt(a,n))return a[n]};return Ep(r,o,o)}function _s(e,t){let r=gr.useRef({}),o=gr.useCallback(i=>e?vn(e,null,i):Pp(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let c=t[l];if(typeof c=="function"){let f=c(i);f!==s[l]&&(s[l]=f,a=!0)}if(typeof c=="string"){if(!i||!Bt(i,c))continue;let f=i[c];f!==s[l]&&(s[l]=f,a=!0)}}return a&&(r.current=j({},s)),r.current};return Ep(o,n,n)}function Le(e,t,r,o){let n=Bt(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=cp({value:n,setValue:i});Me(()=>ot(e,[r],(s,l)=>{let{value:c,setValue:f}=a.current;f&&s[r]!==l[r]&&s[r]!==c&&f(s[r])}),[e,r]),Me(()=>{if(n!==void 0)return e.setState(r,n),go(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function bn(e,t){let[r,o]=gr.useState(()=>e(t));Me(()=>gn(r),[r]);let n=gr.useCallback(s=>hn(r,s),[r]),i=gr.useMemo(()=>Q(j({},r),{useState:n}),[r,n]),a=ie(()=>{o(s=>e(j(j({},t),s.getState())))});return[i,a]}function Fx(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Vr(n).body}function Lx(e){return e?.__unstablePrivateStore}function Op(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=ne(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:ne(r?.renderedItems,[])},a=Lx(e.store),s=At({items:o,renderedItems:i.renderedItems},a),l=At(i,e.store),c=m=>{let p=Nc(m,g=>g.element);s.setState("renderedItems",p),l.setState("renderedItems",p)};rt(l,()=>gn(s)),rt(s,()=>go(s,["items"],m=>{l.setState("items",m.items)})),rt(s,()=>go(s,["renderedItems"],m=>{let p=!0,g=requestAnimationFrame(()=>{let{renderedItems:w}=l.getState();m.renderedItems!==w&&c(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(g);let b=()=>{if(p){p=!1;return}cancelAnimationFrame(g),g=requestAnimationFrame(()=>c(m.renderedItems))},x=Fx(m.renderedItems),y=new IntersectionObserver(b,{root:x});for(let w of m.renderedItems)w.element&&y.observe(w.element);return()=>{cancelAnimationFrame(g),y.disconnect()}}));let f=(m,p,g=!1)=>{let b;return p(y=>{let w=y.findIndex(({id:I})=>I===m.id),C=y.slice();if(w!==-1){b=y[w];let I=le(le({},b),m);C[w]=I,n.set(m.id,I)}else C.push(m),n.set(m.id,m);return C}),()=>{p(y=>{if(!b)return g&&n.delete(m.id),y.filter(({id:I})=>I!==m.id);let w=y.findIndex(({id:I})=>I===m.id);if(w===-1)return y;let C=y.slice();return C[w]=b,n.set(m.id,b),C})}},d=m=>f(m,p=>s.setState("items",p),!0);return We(le({},l),{registerItem:d,renderItem:m=>co(d(m),f(m,p=>s.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:g}=s.getState();p=g.find(b=>b.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:s})}function Ap(e,t,r){return fr(t,[r.store]),Le(e,r,"items","setItems"),e}function Wc(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function Ti(e){let t=[];for(let r of e)t.push(...r);return t}function _n(e){return e.slice().reverse()}var Bx={id:null};function kr(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function jx(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function Ip(e,t){return e.filter(r=>r.rowId===t)}function Hx(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[Bx]:[],...e.slice(0,o)]}function Vp(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Rp(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function zx(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function Wx(e,t,r){let o=Rp(e);for(let n of e)for(let i=0;iot(a,["renderedItems","activeId"],l=>{a.setState("activeId",c=>{var f;return c!==void 0?c:(f=kr(l.renderedItems))==null?void 0:f.id})}));let s=(l="next",c={})=>{var f,d;let m=a.getState(),{skip:p=0,activeId:g=m.activeId,focusShift:b=m.focusShift,focusLoop:x=m.focusLoop,focusWrap:y=m.focusWrap,includesBaseElement:w=m.includesBaseElement,renderedItems:C=m.renderedItems,rtl:I=m.rtl}=c,A=l==="up"||l==="down",V=l==="next"||l==="down",N=V?I&&!A:!I||A,E=b&&!p,S=A?Ti(Wx(Vp(C),g,E)):C;if(S=N?_n(S):S,S=A?Gx(S):S,g==null)return(f=kr(S))==null?void 0:f.id;let D=S.find(P=>P.id===g);if(!D)return(d=kr(S))==null?void 0:d.id;let M=S.some(P=>P.rowId),T=S.indexOf(D),h=S.slice(T+1),_=Ip(h,D.rowId);if(p){let P=jx(_,g),W=P.slice(p)[0]||P[P.length-1];return W?.id}let O=x&&(A?x!=="horizontal":x!=="vertical"),v=M&&y&&(A?y!=="horizontal":y!=="vertical"),k=V?(!M||A)&&O&&w:A?w:!1;if(O){let P=v&&!k?S:Ip(S,D.rowId),W=Hx(P,g,k),Z=kr(W,g);return Z?.id}if(v){let P=kr(k?_:h,g);return k?P?.id||null:P?.id}let F=kr(_,g);return!F&&k?null:F?.id};return We(le(le({},o),a),{setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",c=>c+1))},first:()=>{var l;return(l=kr(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=kr(_n(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))})}function Np(e){let t=Kt(e.id);return j({id:t},e)}function Dp(e,t,r){return e=Ap(e,t,r),Le(e,r,"activeId","setActiveId"),Le(e,r,"includesBaseElement"),Le(e,r,"virtualFocus"),Le(e,r,"orientation"),Le(e,r,"rtl"),Le(e,r,"focusLoop"),Le(e,r,"focusWrap"),Le(e,r,"focusShift"),e}function Mp(e={}){let t=Bo(e.store,Ci(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=ne(e.open,r?.open,e.defaultOpen,!1),n=ne(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:ne(r?.contentElement,null),disclosureElement:ne(r?.disclosureElement,null)},a=At(i,t);return rt(a,()=>ot(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),rt(a,()=>vn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),rt(a,()=>ot(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),We(le({},a),{disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)})}function Fp(e,t,r){return fr(t,[r.store,r.disclosure]),Le(e,r,"open","setOpen"),Le(e,r,"mounted","setMounted"),Le(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}function Lp(e={}){return Mp(e)}function Bp(e,t,r){return Fp(e,t,r)}function jp(e={}){var t=e,{popover:r}=t,o=ds(t,["popover"]);let n=Bo(o.store,Ci(r,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let i=n?.getState(),a=Lp(We(le({},o),{store:n})),s=ne(o.placement,i?.placement,"bottom"),l=We(le({},a.getState()),{placement:s,currentPlacement:s,anchorElement:ne(i?.anchorElement,null),popoverElement:ne(i?.popoverElement,null),arrowElement:ne(i?.arrowElement,null),rendered:Symbol("rendered")}),c=At(l,a,n);return We(le(le({},a),c),{setAnchorElement:f=>c.setState("anchorElement",f),setPopoverElement:f=>c.setState("popoverElement",f),setArrowElement:f=>c.setState("arrowElement",f),render:()=>c.setState("rendered",Symbol("rendered"))})}function Hp(e,t,r){return fr(t,[r.popover]),Le(e,r,"placement"),Bp(e,t,r)}var qx=Do()&&Dc();function zp(e={}){var t=e,{tag:r}=t,o=ds(t,["tag"]);let n=Bo(o.store,zc(r,["value","rtl"]));let i=r?.getState(),a=n?.getState(),s=ne(o.activeId,a?.activeId,o.defaultActiveId,null),l=kp(We(le({},o),{activeId:s,includesBaseElement:ne(o.includesBaseElement,a?.includesBaseElement,!0),orientation:ne(o.orientation,a?.orientation,"vertical"),focusLoop:ne(o.focusLoop,a?.focusLoop,!0),focusWrap:ne(o.focusWrap,a?.focusWrap,!0),virtualFocus:ne(o.virtualFocus,a?.virtualFocus,!0)})),c=jp(We(le({},o),{placement:ne(o.placement,a?.placement,"bottom-start")})),f=ne(o.value,a?.value,o.defaultValue,""),d=ne(o.selectedValue,a?.selectedValue,i?.values,o.defaultSelectedValue,""),m=Array.isArray(d),p=We(le(le({},l.getState()),c.getState()),{value:f,selectedValue:d,resetValueOnSelect:ne(o.resetValueOnSelect,a?.resetValueOnSelect,m),resetValueOnHide:ne(o.resetValueOnHide,a?.resetValueOnHide,m&&!r),activeValue:a?.activeValue}),g=At(p,l,c,n);return qx&&rt(g,()=>ot(g,["virtualFocus"],()=>{g.setState("virtualFocus",!1)})),rt(g,()=>{if(r)return co(ot(g,["selectedValue"],b=>{Array.isArray(b.selectedValue)&&r.setValues(b.selectedValue)}),ot(r,["values"],b=>{g.setState("selectedValue",b.values)}))}),rt(g,()=>ot(g,["resetValueOnHide","mounted"],b=>{b.resetValueOnHide&&(b.mounted||g.setState("value",f))})),rt(g,()=>ot(g,["open"],b=>{b.open||(g.setState("activeId",s),g.setState("moves",0))})),rt(g,()=>ot(g,["moves","activeId"],(b,x)=>{b.moves===x.moves&&g.setState("activeValue",void 0)})),rt(g,()=>go(g,["moves","renderedItems"],(b,x)=>{if(b.moves===x.moves)return;let{activeId:y}=g.getState(),w=l.item(y);g.setState("activeValue",w?.value)})),We(le(le(le({},c),l),g),{tag:r,setValue:b=>g.setState("value",b),resetValue:()=>g.setState("value",p.value),setSelectedValue:b=>g.setState("selectedValue",b)})}function Yx(e){let t=Cp();return e=Q(j({},e),{tag:e.tag!==void 0?e.tag:t}),Np(e)}function $x(e,t,r){return fr(t,[r.tag]),Le(e,r,"value","setValue"),Le(e,r,"selectedValue","setSelectedValue"),Le(e,r,"resetValueOnHide"),Le(e,r,"resetValueOnSelect"),Object.assign(Dp(Hp(e,t,r),t,r),{tag:r.tag})}function Gc(e={}){e=Yx(e);let[t,r]=bn(zp,e);return $x(t,r,e)}var Ei=jt(),CI=Ei.useContext,TI=Ei.useScopedContext,qc=Ei.useProviderContext,Wp=Ei.ContextProvider,Gp=Ei.ScopedContextProvider;var Uc=u(ve(),1),Pi=jt([Wp],[Gp]),AI=Pi.useContext,II=Pi.useScopedContext,VI=Pi.useProviderContext,qp=Pi.ContextProvider,xs=Pi.ScopedContextProvider,RI=(0,Uc.createContext)(void 0),kI=(0,Uc.createContext)(void 0);var Oi=jt([qp],[xs]),FI=Oi.useContext,LI=Oi.useScopedContext,Up=Oi.useProviderContext,Yp=Oi.ContextProvider,$p=Oi.ScopedContextProvider;var ws=u(ve(),1),ys=(0,ws.createContext)(void 0),Ai=jt([Yp,pn],[$p,hs]),Yc=Ai.useContext,xn=Ai.useScopedContext,Ss=Ai.useProviderContext,Kp=Ai.ContextProvider,Zp=Ai.ScopedContextProvider,Cs=(0,ws.createContext)(void 0),Xp=(0,ws.createContext)(!1);var Kx="div",$c=Ee(function(t){var r=t,{store:o}=r,n=se(r,["store"]);let i=Up();return o=o||i,n=Q(j({},n),{ref:Fe(o?.setAnchorElement,n.ref)}),n}),$I=ye(function(t){let r=$c(t);return Te(Kx,r)});function Qp(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function vr(e,t){return t&&e.item(t)||null}function Jp(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function eg(e,t=!1){if(Pt(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=Vr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var Kc=Symbol("FOCUS_SILENTLY");function tg(e){e[Kc]=!0,e.focus({preventScroll:!0})}function rg(e){let t=e[Kc];return delete e[Kc],t}function jo(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var og=u(ve(),1),ng=(0,og.createContext)(!0);var ig="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function Ii(e){return!(!e.matches(ig)||!Vc(e)||e.closest("[inert]"))}function ag(e){for(;e&&!Ii(e);)e=e.closest(ig);return e||null}function Zt(e){let t=No(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function Zc(e){let t=No(e);if(!t)return!1;if(dr(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function sg(e){!Zc(e)&&Ii(e)&&e.focus()}function lg(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(le({block:"nearest",inline:"nearest"},t))):e.focus()}var Gt=u(ve(),1),Zx="div",ug=Do(),Xx=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Qx=Symbol("safariFocusAncestor");function cg(e,t){e&&(e[Qx]=t)}function Jx(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?Xx.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function ew(e){return"labels"in e?e.labels:null}function dg(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function tw(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function rw(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function ow(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function Xc(e,t){return ie(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var Qc=!0;function nw(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(Qc=!1))}function iw(e){e.metaKey||e.ctrlKey||e.altKey||(Qc=!0)}var Vi=Ee(function(t){var r=t,{focusable:o=!0,accessibleWhenDisabled:n,autoFocus:i,onFocusVisible:a}=r,s=se(r,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);let l=(0,Gt.useRef)(null);(0,Gt.useEffect)(()=>{o&&(mr("mousedown",nw,!0),mr("keydown",iw,!0))},[o]),ug&&(0,Gt.useEffect)(()=>{if(!o)return;let v=l.current;if(!v||!dg(v))return;let k=ew(v);if(!k)return;let F=()=>queueMicrotask(()=>v.focus());for(let P of k)P.addEventListener("mouseup",F);return()=>{for(let P of k)P.removeEventListener("mouseup",F)}},[o]);let c=o&&ko(s),f=!!c&&!n,[d,m]=(0,Gt.useState)(!1);(0,Gt.useEffect)(()=>{o&&f&&d&&m(!1)},[o,f,d]),(0,Gt.useEffect)(()=>{if(!o||!d)return;let v=l.current;if(!v||typeof IntersectionObserver>"u")return;let k=new IntersectionObserver(()=>{Ii(v)||m(!1)});return k.observe(v),()=>k.disconnect()},[o,d]);let p=Xc(s.onKeyPressCapture,c),g=Xc(s.onMouseDownCapture,c),b=Xc(s.onClickCapture,c),x=s.onMouseDown,y=ie(v=>{if(x?.(v),v.defaultPrevented||!o)return;let k=v.currentTarget;if(!ug||fs(v)||!Rr(k)&&!dg(k))return;let F=!1,P=()=>{F=!0},W={capture:!0,once:!0};k.addEventListener("focusin",P,W);let Z=ag(k.parentElement);cg(Z,!0),fo(k,"mouseup",()=>{k.removeEventListener("focusin",P,!0),cg(Z,!1),!F&&sg(k)})}),w=(v,k)=>{if(k&&(v.currentTarget=k),!o)return;let F=v.currentTarget;F&&Zt(F)&&(a?.(v),!v.defaultPrevented&&(F.dataset.focusVisible="true",m(!0)))},C=s.onKeyDownCapture,I=ie(v=>{if(C?.(v),v.defaultPrevented||!o||d||v.metaKey||v.altKey||v.ctrlKey||!vt(v))return;let k=v.currentTarget;fo(k,"focusout",()=>w(v,k))}),A=s.onFocusCapture,V=ie(v=>{if(A?.(v),v.defaultPrevented||!o)return;if(!vt(v)){m(!1);return}let k=v.currentTarget,F=()=>w(v,k);Qc||Jx(v.target)?fo(v.target,"focusout",F):m(!1)}),N=s.onBlur,E=ie(v=>{N?.(v),o&&ps(v)&&m(!1)}),S=(0,Gt.useContext)(ng),D=ie(v=>{o&&i&&v&&S&&queueMicrotask(()=>{Zt(v)||Ii(v)&&v.focus()})}),M=mp(l),T=o&&tw(M),h=o&&rw(M),_=s.style,O=(0,Gt.useMemo)(()=>f?j({pointerEvents:"none"},_):_,[f,_]);return s=Q(j({"data-focus-visible":o&&d||void 0,"data-autofocus":i||void 0,"aria-disabled":c||void 0},s),{ref:Fe(l,D,s.ref),style:O,tabIndex:ow(o,f,T,h,s.tabIndex),disabled:h&&f?!0:void 0,contentEditable:c?void 0:s.contentEditable,onKeyPressCapture:p,onClickCapture:b,onMouseDownCapture:g,onMouseDown:y,onKeyDownCapture:I,onFocusCapture:V,onBlur:E}),st(s)}),pV=ye(function(t){let r=Vi(t);return Te(Zx,r)});var hr=u(ve(),1),fg=u(R(),1),aw="div";function sw(e){return e.some(t=>!!t.rowId)}function lw(e){let t=e.target;return t&&!Pt(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function uw(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function mg(e,t,r){return ie(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!vt(o)||uw(o)||lw(o))return;let i=e.getState(),a=(n=vr(e,i.activeId))==null?void 0:n.element;if(!a)return;let s=o,{view:l}=s,c=se(s,["view"]),f=r?.current;a!==f&&a.focus(),ip(a,o.type,c)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function cw(e){return Qp(Ti(_n(Jp(e))))}function dw(e){let[t,r]=(0,hr.useState)(!1),o=(0,hr.useCallback)(()=>r(!0),[]),n=e.useState(i=>vr(e,i.activeId));return(0,hr.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var Jc=Ee(function(t){var r=t,{store:o,composite:n=!0,focusOnMove:i=n,moveOnKeyPress:a=!0}=r,s=se(r,["store","composite","focusOnMove","moveOnKeyPress"]);let l=wp();o=o||l,at(o,!1);let c=(0,hr.useRef)(null),f=(0,hr.useRef)(null),d=dw(o),m=o.useState("moves"),[,p]=dp(n?o.setBaseElement:null);(0,hr.useEffect)(()=>{var h;if(!o||!m||!n||!i)return;let{activeId:_}=o.getState(),O=(h=vr(o,_))==null?void 0:h.element;O&&lg(O)},[o,m,n,i]),Me(()=>{if(!o||!m||!n)return;let{baseElement:h,activeId:_}=o.getState();if(!(_===null)||!h)return;let v=f.current;f.current=null,v&&Mo(v,{relatedTarget:h}),Zt(h)||h.focus()},[o,m,n]);let g=o.useState("activeId"),b=o.useState("virtualFocus");Me(()=>{var h;if(!o||!n||!b)return;let _=f.current;if(f.current=null,!_)return;let v=((h=vr(o,g))==null?void 0:h.element)||No(_);v!==_&&Mo(_,{relatedTarget:v})},[o,g,b,n]);let x=mg(o,s.onKeyDownCapture,f),y=mg(o,s.onKeyUpCapture,f),w=s.onFocusCapture,C=ie(h=>{if(w?.(h),h.defaultPrevented||!o)return;let{virtualFocus:_}=o.getState();if(!_)return;let O=h.relatedTarget,v=rg(h.currentTarget);vt(h)&&v&&(h.stopPropagation(),f.current=O)}),I=s.onFocus,A=ie(h=>{if(I?.(h),h.defaultPrevented||!n||!o)return;let{relatedTarget:_}=h,{virtualFocus:O}=o.getState();O?vt(h)&&!jo(o,_)&&queueMicrotask(d):vt(h)&&o.setActiveId(null)}),V=s.onBlurCapture,N=ie(h=>{var _;if(V?.(h),h.defaultPrevented||!o)return;let{virtualFocus:O,activeId:v}=o.getState();if(!O)return;let k=(_=vr(o,v))==null?void 0:_.element,F=h.relatedTarget,P=jo(o,F),W=f.current;f.current=null,vt(h)&&P?(F===k?W&&W!==F&&Mo(W,h):k?Mo(k,h):W&&Mo(W,h),h.stopPropagation()):!jo(o,h.target)&&k&&Mo(k,h)}),E=s.onKeyDown,S=Ge(a),D=ie(h=>{var _;if(E?.(h),h.defaultPrevented||!o||!vt(h))return;let{orientation:O,renderedItems:v,activeId:k}=o.getState(),F=vr(o,k);if((_=F?.element)!=null&&_.isConnected)return;let P=O!=="horizontal",W=O!=="vertical",Z=sw(v);if((h.key==="ArrowLeft"||h.key==="ArrowRight"||h.key==="Home"||h.key==="End")&&Pt(h.currentTarget))return;let Ie={ArrowUp:(Z||P)&&(()=>{if(Z){let $=cw(v);return $?.id}return o?.last()}),ArrowRight:(Z||W)&&o.first,ArrowDown:(Z||P)&&o.first,ArrowLeft:(Z||W)&&o.last,Home:o.first,End:o.last,PageUp:o.first,PageDown:o.last}[h.key];if(Ie){let $=Ie();if($!==void 0){if(!S(h))return;h.preventDefault(),o.move($)}}});s=pr(s,h=>(0,fg.jsx)(pn,{value:o,children:h}),[o]);let M=o.useState(h=>{var _;if(o&&n&&h.virtualFocus)return(_=vr(o,h.activeId))==null?void 0:_.id});s=Q(j({"aria-activedescendant":M},s),{ref:Fe(c,p,s.ref),onKeyDownCapture:x,onKeyUpCapture:y,onFocusCapture:C,onFocus:A,onBlurCapture:N,onKeyDown:D});let T=o.useState(h=>n&&(h.virtualFocus||h.activeId===null));return s=Vi(j({focusable:T},s)),s}),IV=ye(function(t){let r=Jc(t);return Te(aw,r)});var lt=u(ve(),1),mw="input";function pg(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function gg(e,t){return!t||e==null?!1:(e=hi(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function fw(e){return e.type==="input"}function pw(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function gw(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var vw=Ee(function(t){var r=t,{store:o,focusable:n=!0,autoSelect:i=!1,getAutoSelectId:a,setValueOnChange:s,showMinLength:l=0,showOnChange:c,showOnMouseDown:f,showOnClick:d=f,showOnKeyDown:m,showOnKeyPress:p=m,blurActiveItemOnClick:g,setValueOnClick:b=!0,moveOnKeyPress:x=!0,autoComplete:y="list"}=r,w=se(r,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);let C=Ss();o=o||C,at(o,!1);let I=(0,lt.useRef)(null),[A,V]=gp(),N=(0,lt.useRef)(!1),E=(0,lt.useRef)(!1),S=o.useState(B=>B.virtualFocus&&i),D=y==="inline"||y==="both",[M,T]=(0,lt.useState)(D);pp(()=>{D&&T(!0)},[D]);let h=o.useState("value"),_=(0,lt.useRef)();(0,lt.useEffect)(()=>ot(o,["selectedValue","activeId"],(B,fe)=>{_.current=fe.selectedValue}),[]);let O=o.useState(B=>{var fe;if(D&&M&&!(B.activeValue&&Array.isArray(B.selectedValue)&&(B.selectedValue.includes(B.activeValue)||(fe=_.current)!=null&&fe.includes(B.activeValue))))return B.activeValue}),v=o.useState("renderedItems"),k=o.useState("open"),F=o.useState("contentElement"),P=(0,lt.useMemo)(()=>{if(!D||!M)return h;if(pg(v,O,S)){if(gg(h,O)){let fe=O?.slice(h.length)||"";return h+fe}return h}return O||h},[D,M,v,O,S,h]);(0,lt.useEffect)(()=>{let B=I.current;if(!B)return;let fe=()=>T(!0);return B.addEventListener("combobox-item-move",fe),()=>{B.removeEventListener("combobox-item-move",fe)}},[]),(0,lt.useEffect)(()=>{if(!D||!M||!O||!pg(v,O,S)||!gg(h,O))return;let fe=vi;return queueMicrotask(()=>{let Ye=I.current;if(!Ye)return;let{start:$e,end:Ut}=mn(Ye),Er=h.length,ft=O.length;xi(Ye,Er,ft),fe=()=>{if(!Zt(Ye))return;let{start:Eo,end:i0}=mn(Ye);Eo===Er&&i0===ft&&xi(Ye,$e,Ut)}}),()=>fe()},[A,D,M,O,v,S,h]);let W=(0,lt.useRef)(null),Z=ie(a),Je=(0,lt.useRef)(null);(0,lt.useEffect)(()=>{if(!k||!F)return;let B=fn(F);if(!B)return;W.current=B;let fe=()=>{N.current=!1},Ye=()=>{if(!o||!N.current)return;let{activeId:Ut}=o.getState();Ut!==null&&Ut!==Je.current&&(N.current=!1)},$e={passive:!0,capture:!0};return B.addEventListener("wheel",fe,$e),B.addEventListener("touchmove",fe,$e),B.addEventListener("scroll",Ye,$e),()=>{B.removeEventListener("wheel",fe,!0),B.removeEventListener("touchmove",fe,!0),B.removeEventListener("scroll",Ye,!0)}},[k,F,o]),Me(()=>{h&&(E.current||(N.current=!0))},[h]),Me(()=>{S!=="always"&&k||(N.current=k)},[S,k]);let it=o.useState("resetValueOnSelect");fr(()=>{var B,fe;let Ye=N.current;if(!o||!k||!Ye&&!it)return;let{baseElement:$e,contentElement:Ut,activeId:Er}=o.getState();if(!($e&&!Zt($e))){if(Ut?.hasAttribute("data-placing")){let ft=new MutationObserver(V);return ft.observe(Ut,{attributeFilter:["data-placing"]}),()=>ft.disconnect()}if(S&&Ye){let ft=Z(v),Eo=ft!==void 0?ft:(B=gw(v))!=null?B:o.first();Je.current=Eo,o.move(Eo??null)}else{let ft=(fe=o.item(Er||o.first()))==null?void 0:fe.element;ft&&"scrollIntoView"in ft&&ft.scrollIntoView({block:"nearest",inline:"nearest"})}}},[o,k,A,h,S,it,Z,v]),(0,lt.useEffect)(()=>{if(!D)return;let B=I.current;if(!B)return;let fe=[B,F].filter($e=>!!$e),Ye=$e=>{fe.every(Ut=>ps($e,Ut))&&o?.setValue(P)};for(let $e of fe)$e.addEventListener("focusout",Ye);return()=>{for(let $e of fe)$e.removeEventListener("focusout",Ye)}},[D,F,o,P]);let ge=B=>B.currentTarget.value.length>=l,Ie=w.onChange,$=Ge(c??ge),ke=Ge(s??!o.tag),et=ie(B=>{if(Ie?.(B),B.defaultPrevented||!o)return;let fe=B.currentTarget,{value:Ye,selectionStart:$e,selectionEnd:Ut}=fe,Er=B.nativeEvent;if(N.current=!0,fw(Er)&&(Er.isComposing&&(N.current=!1,E.current=!0),D)){let ft=Er.inputType==="insertText"||Er.inputType==="insertCompositionText",Eo=$e===Ye.length;T(ft&&Eo)}if(ke(B)){let ft=Ye===o.getState().value;o.setValue(Ye),queueMicrotask(()=>{xi(fe,$e,Ut)}),D&&S&&ft&&V()}$(B)&&o.show(),(!S||!N.current)&&o.setActiveId(null)}),tr=w.onCompositionEnd,qr=ie(B=>{N.current=!0,E.current=!1,tr?.(B),!B.defaultPrevented&&S&&V()}),Zo=w.onMouseDown,To=Ge(g??(()=>!!o?.getState().includesBaseElement)),Ml=Ge(b),Fl=Ge(d??ge),Ll=ie(B=>{Zo?.(B),!B.defaultPrevented&&(B.button||B.ctrlKey||o&&(To(B)&&o.setActiveId(null),Ml(B)&&o.setValue(P),Fl(B)&&fo(B.currentTarget,"mouseup",o.show)))}),om=w.onKeyDown,J_=Ge(p??ge),e0=ie(B=>{if(om?.(B),B.repeat||(N.current=!1),B.defaultPrevented||B.ctrlKey||B.altKey||B.shiftKey||B.metaKey||!o)return;let{open:fe}=o.getState();fe||(B.key==="ArrowUp"||B.key==="ArrowDown")&&J_(B)&&(B.preventDefault(),o.show())}),nm=w.onBlur,t0=ie(B=>{N.current=!1,nm?.(B),B.defaultPrevented}),r0=Kt(w.id),o0=pw(y)?y:void 0,n0=o.useState(B=>B.activeId===null);return w=Q(j({id:r0,role:"combobox","aria-autocomplete":o0,"aria-haspopup":kc(F,"listbox"),"aria-expanded":k,"aria-controls":F?.id,"data-active-item":n0||void 0,value:P},w),{ref:Fe(I,w.ref),onChange:et,onCompositionEnd:qr,onMouseDown:Ll,onKeyDown:e0,onBlur:t0}),w=Jc(Q(j({store:o,focusable:n},w),{moveOnKeyPress:B=>Ac(x,B)?!1:(D&&T(!0),!0)})),w=$c(j({store:o},w)),j({autoComplete:"off"},w)}),Ts=ye(function(t){let r=vw(t);return Te(mw,r)});var vg=u(R(),1);function Es(e={}){let t=Gc(e);return(0,vg.jsx)(Kp,{value:t,children:e.children})}var vo=u(ve(),1),hw="button";function hg(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?Rr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?Rr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var bw=Symbol("command"),ed=Ee(function(t){var r=t,{clickOnEnter:o=!0,clickOnSpace:n=!0}=r,i=se(r,["clickOnEnter","clickOnSpace"]);let a=(0,vo.useRef)(null),[s,l]=(0,vo.useState)(!1);(0,vo.useEffect)(()=>{a.current&&l(Rr(a.current))},[]);let[c,f]=(0,vo.useState)(!1),d=(0,vo.useRef)(!1),m=ko(i),[p,g]=vp(i,bw,!0),b=i.onKeyDown,x=ie(C=>{b?.(C);let I=C.currentTarget;if(C.defaultPrevented||p||m||!vt(C)||Pt(I)||I.isContentEditable)return;let A=o&&C.key==="Enter",V=n&&C.key===" ",N=C.key==="Enter"&&!o,E=C.key===" "&&!n;if(N||E){C.preventDefault();return}if(A||V){let S=hg(C);if(A){if(!S){C.preventDefault();let D=C,{view:M}=D,T=se(D,["view"]),h=()=>Fc(I,T);Mc()?fo(I,"keyup",h):queueMicrotask(h)}}else V&&(d.current=!0,S||(C.preventDefault(),f(!0)))}}),y=i.onKeyUp,w=ie(C=>{if(y?.(C),C.defaultPrevented||p||m||C.metaKey)return;let I=n&&C.key===" ";if(d.current&&I&&(d.current=!1,!hg(C))){C.preventDefault(),f(!1);let A=C.currentTarget,V=C,{view:N}=V,E=se(V,["view"]);queueMicrotask(()=>Fc(A,E))}});return i=Q(j(j({"data-active":c||void 0,type:s?"button":void 0},g),i),{ref:Fe(a,i.ref),onKeyDown:x,onKeyUp:w}),i=Vi(i),i}),tR=ye(function(t){let r=ed(t);return Te(hw,r)});var Ps=u(ve(),1),_g=u(R(),1),_w="span";function bg(e){return hi(e).toLowerCase()}function xw(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function ww(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function yw(e){return e.sort(([t],[r])=>t-r)}function Sw(e,t){if(!e||!t)return e;let r=Wc(t).filter(Boolean).map(bg),o=[],n=(l,c=!1)=>(0,_g.jsx)("span",{"data-autocomplete-value":c?"":void 0,"data-user-value":c?void 0:"",children:l},o.length),i=yw(ww(xw(bg(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,c],f)=>{var d;let m=e.slice(l,l+c),p=(d=i[f+1])==null?void 0:d[0],g=e.slice(l+c,p);return[m,g]})].forEach((l,c)=>{l&&o.push(n(l,c%2===0))}),o}var Cw=Ee(function(t){var r=t,{store:o,value:n,userValue:i}=r,a=se(r,["store","value","userValue"]);let s=xn();o=o||s;let l=(0,Ps.useContext)(Cs),c=n??l,f=hn(o,m=>i??m?.value),d=(0,Ps.useMemo)(()=>{if(c)return f?Sw(c,f):c},[c,f]);return a=j({children:d},a),st(a)}),Os=ye(function(t){let r=Cw(t);return Te(_w,r)});var xg=u(ve(),1),Tw="div";function wg(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function Ew(e){let t=wg(e);return t?dr(e.currentTarget,t):!1}var td=Symbol("composite-hover");function Pw(e){let t=wg(e);if(!t)return!1;do{if(Bt(t,td)&&t[td])return!0;t=t.parentElement}while(t);return!1}var rd=Ee(function(t){var r=t,{store:o,focusOnHover:n=!0,blurOnHoverEnd:i=!!n}=r,a=se(r,["store","focusOnHover","blurOnHoverEnd"]);let s=vs();o=o||s,at(o,!1);let l=hp(),c=a.onMouseMove,f=Ge(n),d=ie(x=>{if(c?.(x),!x.defaultPrevented&&l()&&f(x)){if(!Zc(x.currentTarget)){let y=o?.getState().baseElement;y&&!Zt(y)&&y.focus()}o?.setActiveId(x.currentTarget.id)}}),m=a.onMouseLeave,p=Ge(i),g=ie(x=>{var y;m?.(x),!x.defaultPrevented&&l()&&(Ew(x)||Pw(x)||f(x)&&p(x)&&(o?.setActiveId(null),(y=o?.getState().baseElement)==null||y.focus()))}),b=(0,xg.useCallback)(x=>{x&&(x[td]=!0)},[]);return a=Q(j({},a),{ref:Fe(b,a.ref),onMouseMove:d,onMouseLeave:g}),st(a)}),hR=po(ye(function(t){let r=rd(t);return Te(Tw,r)}));var As=u(ve(),1),Ow="div",od=Ee(function(t){var r=t,{store:o,shouldRegisterItem:n=!0,getItem:i=bi,element:a}=r,s=se(r,["store","shouldRegisterItem","getItem","element"]);let l=bp();o=o||l;let c=Kt(s.id),f=(0,As.useRef)(a);return(0,As.useEffect)(()=>{let d=f.current;if(!c||!d||!n)return;let m=i({id:c,element:d});return o?.renderItem(m)},[c,n,i,o]),s=Q(j({},s),{ref:Fe(f,s.ref)}),st(s)}),CR=ye(function(t){let r=od(t);return Te(Ow,r)});var Nr=u(ve(),1),Sg=u(R(),1),Aw="button";function Iw(e){return _i(e)?!0:e.tagName==="INPUT"&&!Rr(e)}function Vw(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function Rw(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function yg(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=fn(e);if(!a)return;let s=Vw(a,o),l,c;for(let f=0;f=0){c!==void 0&&cZ.rowId===w);return b.ariaPosInSet+W.findIndex(Z=>Z.id===p)},isTabbable(P){if(!P?.renderedItems.length)return!0;if(P.virtualFocus)return!1;if(s)return!0;if(P.activeId===null)return!1;let W=o?.item(P.activeId);return W?.disabled||!W?.element?!0:P.activeId===p}}),E=(0,Nr.useCallback)(P=>{var W;let Z=Q(j({},P),{id:p||P.id,rowId:w,disabled:!!y,children:(W=P.element)==null?void 0:W.textContent});return l?l(Z):Z},[p,w,y,l]),S=d.onFocus,D=(0,Nr.useRef)(!1),M=ie(P=>{if(S?.(P),P.defaultPrevented||fs(P)||!p||!o||kw(P,o))return;let{virtualFocus:W,baseElement:Z}=o.getState();if(o.setActiveId(p),_i(P.currentTarget)&&eg(P.currentTarget),!W||!vt(P)||Iw(P.currentTarget)||!Z?.isConnected)return;Do()&&P.currentTarget.hasAttribute("data-autofocus")&&P.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),D.current=!0,P.relatedTarget===Z||jo(o,P.relatedTarget)?tg(Z):Z.focus()}),T=d.onBlurCapture,h=ie(P=>{if(T?.(P),P.defaultPrevented)return;let W=o?.getState();W?.virtualFocus&&D.current&&(D.current=!1,P.preventDefault(),P.stopPropagation())}),_=d.onKeyDown,O=Ge(i),v=Ge(a),k=ie(P=>{if(_?.(P),P.defaultPrevented||!vt(P)||!o)return;let{currentTarget:W}=P,Z=o.getState(),Je=o.item(p),it=!!Je?.rowId,ge=Z.orientation!=="horizontal",Ie=Z.orientation!=="vertical",$=()=>!!(it||Ie||!Z.baseElement||!Pt(Z.baseElement)),et={ArrowUp:(it||ge)&&o.up,ArrowRight:(it||Ie)&&o.next,ArrowDown:(it||ge)&&o.down,ArrowLeft:(it||Ie)&&o.previous,Home:()=>{if($())return!it||P.ctrlKey?o?.first():o?.previous(-1)},End:()=>{if($())return!it||P.ctrlKey?o?.last():o?.next(-1)},PageUp:()=>yg(W,o,o?.up,!0),PageDown:()=>yg(W,o,o?.down)}[P.key];if(et){if(_i(W)){let qr=mn(W),Zo=Ie&&P.key==="ArrowLeft",To=Ie&&P.key==="ArrowRight",Ml=ge&&P.key==="ArrowUp",Fl=ge&&P.key==="ArrowDown";if(To||Fl){let{length:Ll}=Rc(W);if(qr.end!==Ll)return}else if((Zo||Ml)&&qr.start!==0)return}let tr=et();if(O(P)||tr!==void 0){if(!v(P))return;P.preventDefault(),o.move(tr)}}}),F=(0,Nr.useMemo)(()=>({id:p,baseElement:C}),[p,C]);return d=pr(d,P=>(0,Sg.jsx)(yp.Provider,{value:F,children:P}),[F]),d=Q(j({id:p,"data-active-item":I||void 0},d),{ref:Fe(g,d.ref),tabIndex:N?d.tabIndex:-1,onFocus:M,onBlurCapture:h,onKeyDown:k}),d=ed(d),d=od(Q(j({store:o},d),{getItem:E,shouldRegisterItem:p?d.shouldRegisterItem:!1})),st(Q(j({},d),{"aria-setsize":A,"aria-posinset":V}))}),LR=po(ye(function(t){let r=nd(t);return Te(Aw,r)}));var Is=u(ve(),1),id=u(R(),1),Nw="div";function Dw(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function Mw(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var Cg=Ee(function(t){var r=t,{store:o,value:n,hideOnClick:i,setValueOnClick:a,selectValueOnClick:s=!0,resetValueOnSelect:l,focusOnHover:c=!1,moveOnKeyPress:f=!0,getItem:d}=r,m=se(r,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]),p;let g=xn();o=o||g,at(o,!1);let{resetValueOnSelectState:b,multiSelectable:x,selected:y}=_s(o,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(h){return Array.isArray(h.selectedValue)},selected(h){return Dw(h.selectedValue,n)}}),w=(0,Is.useCallback)(h=>{let _=Q(j({},h),{value:n});return d?d(_):_},[n,d]);a=a??!x,i=i??(n!=null&&!x);let C=m.onClick,I=Ge(a),A=Ge(s),V=Ge((p=l??b)!=null?p:x),N=Ge(i),E=ie(h=>{C?.(h),!h.defaultPrevented&&(np(h)||op(h)||(n!=null&&(A(h)&&(V(h)&&o?.resetValue(),o?.setSelectedValue(_=>Array.isArray(_)?_.includes(n)?_.filter(O=>O!==n):[..._,n]:n)),I(h)&&o?.setValue(n)),N(h)&&o?.hide()))}),S=m.onKeyDown,D=ie(h=>{if(S?.(h),h.defaultPrevented)return;let _=o?.getState().baseElement;if(!_||Zt(_))return;(h.key.length===1||h.key==="Backspace"||h.key==="Delete")&&(queueMicrotask(()=>_.focus()),Pt(_)&&o?.setValue(_.value))});x&&y!=null&&(m=j({"aria-selected":y},m)),m=pr(m,h=>(0,id.jsx)(Cs.Provider,{value:n,children:(0,id.jsx)(Xp.Provider,{value:y??!1,children:h})}),[n,y]);let M=(0,Is.useContext)(ys);m=Q(j({role:Mw(M),children:n},m),{onClick:E,onKeyDown:D});let T=Ge(f);return m=nd(Q(j({store:o},m),{getItem:w,moveOnKeyPress:h=>{if(!T(h))return!1;let _=new Event("combobox-item-move"),O=o?.getState().baseElement;return O?.dispatchEvent(_),!0}})),m=rd(j({store:o,focusOnHover:c},m)),m}),Ri=po(ye(function(t){let r=Cg(t);return Te(Nw,r)}));var Fw="label",Lw=Ee(function(t){var r=t,{store:o}=r,n=se(r,["store"]);let i=Ss();o=o||i,at(o,!1);let a=o.useState(s=>{var l;return(l=s.baseElement)==null?void 0:l.id});return n=j({htmlFor:a},n),st(n)}),Vs=po(ye(function(t){let r=Lw(t);return Te(Fw,r)}));var wn=u(ve(),1),Pg=u(Am(),1),ad=u(R(),1),Bw="div";function Tg(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function jw(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function Eg(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function sd(e,t,r){return!r&&t!==!1&&(!e||!!t)}var Hw=Ee(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=se(r,["store","alwaysVisible"]);let a=qc();o=o||a,at(o,!1);let s=(0,wn.useRef)(null),l=Kt(i.id),[c,f]=(0,wn.useState)(null),d=o.useState("open"),m=o.useState("mounted"),p=o.useState("animated"),g=o.useState("contentElement"),b=hn(o.disclosure,"contentElement");Me(()=>{s.current&&o?.setContentElement(s.current)},[o]),Me(()=>{let C;return o?.setState("animated",I=>(C=I,!0)),()=>{C!==void 0&&o?.setState("animated",C)}},[o]),Me(()=>{if(p){if(!g?.isConnected){f(null);return}return jw(()=>{f(d?"enter":m?"leave":null)})}},[p,g,d,m]),Me(()=>{if(!o||!p||!c||!g)return;let C=()=>o?.setState("animating",!1),I=()=>(0,Pg.flushSync)(C);if(c==="leave"&&d||c==="enter"&&!d)return;if(typeof p=="number")return Tg(p,I);let{transitionDuration:A,animationDuration:V,transitionDelay:N,animationDelay:E}=getComputedStyle(g),{transitionDuration:S="0",animationDuration:D="0",transitionDelay:M="0",animationDelay:T="0"}=b?getComputedStyle(b):{},h=Eg(N,E,M,T),_=Eg(A,V,S,D),O=h+_;if(!O){c==="enter"&&o.setState("animated",!1),C();return}let v=1e3/60,k=Math.max(O-v,0);return Tg(k,I)},[o,p,g,b,d,c]),i=pr(i,C=>(0,ad.jsx)(xs,{value:o,children:C}),[o]);let x=sd(m,i.hidden,n),y=i.style,w=(0,wn.useMemo)(()=>x?Q(j({},y),{display:"none"}):y,[x,y]);return i=Q(j({id:l,"data-open":d||void 0,"data-enter":c==="enter"||void 0,"data-leave":c==="leave"||void 0,hidden:x},i),{ref:Fe(l?o.setContentElement:null,s,i.ref),style:w}),st(i)}),zw=ye(function(t){let r=Hw(t);return Te(Bw,r)}),m5=ye(function(t){var r=t,{unmountOnHide:o}=r,n=se(r,["unmountOnHide"]);let i=qc(),a=n.store||i;return hn(a,l=>!o||l?.mounted)===!1?null:(0,ad.jsx)(zw,j({},n))});var Rs=u(ve(),1),ld=u(R(),1),Ww="div",Og=Ee(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=se(r,["store","alwaysVisible"]);let a=xn(!0),s=Yc();o=o||s;let l=!!o&&o===a;at(o,!1);let c=(0,Rs.useRef)(null),f=Kt(i.id),d=o.useState("mounted"),m=sd(d,i.hidden,n),p=m?Q(j({},i.style),{display:"none"}):i.style,g=o.useState(V=>Array.isArray(V.selectedValue)),b=fp(c,"role",i.role),y=(b==="listbox"||b==="tree"||b==="grid")&&g||void 0,[w,C]=(0,Rs.useState)(!1),I=o.useState("contentElement");Me(()=>{if(!d)return;let V=c.current;if(!V||I!==V)return;let N=()=>{C(!!V.querySelector("[role='listbox']"))},E=new MutationObserver(N);return E.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),N(),()=>E.disconnect()},[d,I]),w||(i=j({role:"listbox","aria-multiselectable":y},i)),i=pr(i,V=>(0,ld.jsx)(Zp,{value:o,children:(0,ld.jsx)(ys.Provider,{value:b,children:V})}),[o,b]);let A=f&&(!a||!l)?o.setContentElement:null;return i=Q(j({id:f,hidden:m},i),{ref:Fe(A,c,i.ref),style:p}),st(i)}),ki=ye(function(t){let r=Og(t);return Te(Ww,r)});var Dg=u(ud(),1);var Mg=u(yt(),1),Dr=u(G(),1),Ho=u(H(),1),Xt=u(q(),1);var Kw=[],Ni=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:Kw;var Di=u(H(),1),Zw=[];function ht({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:Zw,[o,n]=(0,Di.useState)(r),[i,a]=(0,Di.useState)(!1);return(0,Di.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let c=Array.isArray(l)&&l.length>0?l:r;n(c)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var ue=u(R(),1);function Rg(e=""){return(0,Dg.default)(e.trim().toLowerCase())}var kg=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function Ng(e,t){return`${e}-${t}`}var Fg=({selected:e})=>(0,ue.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,ue.jsx)(Xt.Icon,{icon:Zn})}),Lg=({selected:e})=>(0,ue.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function Bg({view:e,filter:t,onChangeView:r}){let o=(0,Mg.useInstanceId)(Bg,"dataviews-filter-list-box"),[n,i]=(0,Ho.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=Ni(t,a);return(0,ue.jsx)(Xt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Dr.sprintf)((0,Dr.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(Ng(o,t.elements[0].value))},render:(0,ue.jsx)(Xt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,ue.jsxs)(Xt.Composite.Hover,{render:(0,ue.jsx)(Xt.Composite.Item,{id:Ng(o,l.value),render:(0,ue.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let c=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:kg(t,a,l.value)}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:kg(t,a,l.value)}];r({...e,page:1,filters:c})}}),children:[t.singleSelection&&(0,ue.jsx)(Lg,{selected:s===l.value}),!t.singleSelection&&(0,ue.jsx)(Fg,{selected:s.includes(l.value)}),(0,ue.jsx)("span",{children:l.label})]},l.value))})}function Xw({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Ho.useState)(""),i=(0,Ho.useDeferredValue)(o),a=e.filters?.find(c=>c.field===t.field),s=Ni(t,a),l=(0,Ho.useMemo)(()=>{let c=Rg(i);return t.elements.filter(f=>Rg(f.label).includes(c))},[t.elements,i]);return(0,ue.jsxs)(Es,{selectedValue:s,setSelectedValue:c=>{let f=a?[...(e.filters??[]).map(d=>d.field===t.field?{...d,operator:a.operator||t.operators[0],value:c}:d)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:c}];r({...e,page:1,filters:f})},setValue:n,children:[(0,ue.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,ue.jsx)(Vs,{render:(0,ue.jsx)(Xt.VisuallyHidden,{children:(0,Dr.__)("Search items")}),children:(0,Dr.__)("Search items")}),(0,ue.jsx)(Ts,{autoSelect:"always",placeholder:(0,Dr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,ue.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,ue.jsx)(Xt.Icon,{icon:si})})]}),(0,ue.jsxs)(ki,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(c=>(0,ue.jsxs)(Ri,{resetValueOnSelect:!1,value:c.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,ue.jsx)(Lg,{selected:s===c.value}),!t.singleSelection&&(0,ue.jsx)(Fg,{selected:s.includes(c.value)}),(0,ue.jsxs)("span",{children:[(0,ue.jsx)(Os,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:c.label}),!!c.description&&(0,ue.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:c.description})]})]},c.value)),!l.length&&(0,ue.jsx)("p",{children:(0,Dr.__)("No results found")})]})]})}function jg(e){let{elements:t,isLoading:r}=ht({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,ue.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,ue.jsx)(Xt.Spinner,{})});if(t.length===0)return(0,ue.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Dr.__)("No elements found")});let o=t.length>10?Xw:Bg;return(0,ue.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var Wg=u(zg(),1),Gg=u(yt(),1),cd=u(H(),1),qg=u(q(),1);var dd=u(R(),1);function Ug({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(c=>c.field===e.field),i=Ni(e,n),a=(0,cd.useMemo)(()=>{let c=o.find(f=>f.id===e.field);return c&&{...c,isValid:{},getValue:({item:f})=>f[c.id],setValue:({value:f})=>({[c.id]:f})}},[o,e.field]),s=(0,cd.useMemo)(()=>(t.filters??[]).reduce((c,f)=>(c[f.field]=f.value,c),{}),[t.filters]),l=(0,Gg.useEvent)(c=>{if(!a||!n)return;let f=a.getValue({item:c});(0,Wg.default)(f,i)||r({...t,filters:(t.filters??[]).map(d=>d.field===e.field?{...d,operator:n.operator||e.operators[0],value:f===""?void 0:f}:d)})});return!a||!a.Edit||!n?null:(0,dd.jsx)(qg.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,dd.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var Qw=Math.pow(10,8)*24*60*60*1e3,X5=-Qw,Ns=6048e5,Yg=864e5;var Jw=3600;var $g=Jw*24,Q5=$g*7,ey=$g*365.2425,ty=ey/12,J5=ty*3,md=Symbol.for("constructDateFrom");function Xe(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&md in e?e[md](t):e instanceof Date?new e.constructor(t):new Date(t)}function _e(e,t){return Xe(t||e,e)}function Ds(e,t,r){let o=_e(e,r?.in);return isNaN(t)?Xe(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function Ms(e,t,r){let o=_e(e,r?.in);if(isNaN(t))return Xe(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Xe(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var ry={};function ho(){return ry}function Mr(e,t){let r=ho(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=_e(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function fd(e){let t=_e(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function Kg(e,...t){let r=Xe.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function pd(e,t){let r=_e(e,t?.in);return r.setHours(0,0,0,0),r}function Zg(e,t,r){let[o,n]=Kg(r?.in,e,t),i=pd(o),a=pd(n),s=+i-fd(i),l=+a-fd(a);return Math.round((s-l)/Yg)}function Xg(e,t){let r=Fs(e,t),o=Xe(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),zo(o)}function Qg(e,t,r){return Ds(e,t*7,r)}function Jg(e,t,r){return Ms(e,t*12,r)}function ev(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function yn(e){return!(!ev(e)&&typeof e!="number"||isNaN(+_e(e)))}function tv(e,t){let r=_e(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ls(e,t){let r=_e(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var oy={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},rv=(e,t,r)=>{let o,n=oy[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Bs(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var ny={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},iy={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},ay={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ov={date:Bs({formats:ny,defaultWidth:"full"}),time:Bs({formats:iy,defaultWidth:"full"}),dateTime:Bs({formats:ay,defaultWidth:"full"})};var sy={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},nv=(e,t,r,o)=>sy[e];function Sn(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var ly={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},uy={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},cy={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},dy={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},my={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},fy={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},py=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},iv={ordinalNumber:py,era:Sn({values:ly,defaultWidth:"wide"}),quarter:Sn({values:uy,defaultWidth:"wide",argumentCallback:e=>e-1}),month:Sn({values:cy,defaultWidth:"wide"}),day:Sn({values:dy,defaultWidth:"wide"}),dayPeriod:Sn({values:my,defaultWidth:"wide",formattingValues:fy,defaultFormattingWidth:"wide"})};function Cn(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?vy(s,d=>d.test(a)):gy(s,d=>d.test(a)),c;c=e.valueCallback?e.valueCallback(l):l,c=r.valueCallback?r.valueCallback(c):c;let f=t.slice(a.length);return{value:c,rest:f}}}function gy(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function vy(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var hy=/^(\d+)(th|st|nd|rd)?/i,by=/\d+/i,_y={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},xy={any:[/^b/i,/^(a|c)/i]},wy={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},yy={any:[/1/i,/2/i,/3/i,/4/i]},Sy={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Cy={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Ty={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Ey={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Py={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Oy={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},sv={ordinalNumber:av({matchPattern:hy,parsePattern:by,valueCallback:e=>parseInt(e,10)}),era:Cn({matchPatterns:_y,defaultMatchWidth:"wide",parsePatterns:xy,defaultParseWidth:"any"}),quarter:Cn({matchPatterns:wy,defaultMatchWidth:"wide",parsePatterns:yy,defaultParseWidth:"any",valueCallback:e=>e+1}),month:Cn({matchPatterns:Sy,defaultMatchWidth:"wide",parsePatterns:Cy,defaultParseWidth:"any"}),day:Cn({matchPatterns:Ty,defaultMatchWidth:"wide",parsePatterns:Ey,defaultParseWidth:"any"}),dayPeriod:Cn({matchPatterns:Py,defaultMatchWidth:"any",parsePatterns:Oy,defaultParseWidth:"any"})};var gd={code:"en-US",formatDistance:rv,formatLong:ov,formatRelative:nv,localize:iv,match:sv,options:{weekStartsOn:0,firstWeekContainsDate:1}};function lv(e,t){let r=_e(e,t?.in);return Zg(r,Ls(r))+1}function uv(e,t){let r=_e(e,t?.in),o=+zo(r)-+Xg(r);return Math.round(o/Ns)+1}function js(e,t){let r=_e(e,t?.in),o=r.getFullYear(),n=ho(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Xe(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Mr(a,t),l=Xe(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let c=Mr(l,t);return+r>=+s?o+1:+r>=+c?o:o-1}function cv(e,t){let r=ho(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=js(e,t),i=Xe(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Mr(i,t)}function dv(e,t){let r=_e(e,t?.in),o=+Mr(r,t)-+cv(r,t);return Math.round(o/Ns)+1}function me(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Fr={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return me(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):me(r+1,2)},d(e,t){return me(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return me(e.getHours()%12||12,t.length)},H(e,t){return me(e.getHours(),t.length)},m(e,t){return me(e.getMinutes(),t.length)},s(e,t){return me(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return me(n,t.length)}};var Tn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},vd={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Fr.y(e,t)},Y:function(e,t,r,o){let n=js(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return me(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):me(i,t.length)},R:function(e,t){let r=Fs(e);return me(r,t.length)},u:function(e,t){let r=e.getFullYear();return me(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return me(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return me(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Fr.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return me(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=dv(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):me(n,t.length)},I:function(e,t,r){let o=uv(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):me(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Fr.d(e,t)},D:function(e,t,r){let o=lv(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):me(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return me(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return me(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return me(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=Tn.noon:o===0?n=Tn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=Tn.evening:o>=12?n=Tn.afternoon:o>=4?n=Tn.morning:n=Tn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Fr.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Fr.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):me(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):me(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Fr.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Fr.s(e,t)},S:function(e,t){return Fr.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return fv(o);case"XXXX":case"XX":return Wo(o);default:return Wo(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return fv(o);case"xxxx":case"xx":return Wo(o);default:return Wo(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+mv(o,":");default:return"GMT"+Wo(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+mv(o,":");default:return"GMT"+Wo(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return me(o,t.length)},T:function(e,t,r){return me(+e,t.length)}};function mv(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+me(i,2)}function fv(e,t){return e%60===0?(e>0?"-":"+")+me(Math.abs(e)/60,2):Wo(e,t)}function Wo(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=me(Math.trunc(o/60),2),i=me(o%60,2);return r+n+t+i}var pv=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},gv=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Ay=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return pv(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",pv(o,t)).replace("{{time}}",gv(n,t))},vv={p:gv,P:Ay};var Iy=/^D+$/,Vy=/^Y+$/,Ry=["D","DD","YY","YYYY"];function hv(e){return Iy.test(e)}function bv(e){return Vy.test(e)}function _v(e,t,r){let o=ky(e,t,r);if(console.warn(o),Ry.includes(e))throw new RangeError(o)}function ky(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Ny=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Dy=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,My=/^'([^]*?)'?$/,Fy=/''/g,Ly=/[a-zA-Z]/;function Mi(e,t,r){let o=ho(),n=r?.locale??o.locale??gd,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=_e(e,r?.in);if(!yn(s))throw new RangeError("Invalid time value");let l=t.match(Dy).map(f=>{let d=f[0];if(d==="p"||d==="P"){let m=vv[d];return m(f,n.formatLong)}return f}).join("").match(Ny).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let d=f[0];if(d==="'")return{isToken:!1,value:By(f)};if(vd[d])return{isToken:!0,value:f};if(d.match(Ly))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let c={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(f=>{if(!f.isToken)return f.value;let d=f.value;(!r?.useAdditionalWeekYearTokens&&bv(d)||!r?.useAdditionalDayOfYearTokens&&hv(d))&&_v(d,t,String(e));let m=vd[d[0]];return m(s,d,n.localize,c)}).join("")}function By(e){let t=e.match(My);return t?t[1].replace(Fy,"'"):e}function Go(e,t,r){return Ds(e,-t,r)}function Hs(e,t,r){return Ms(e,-t,r)}function xv(e,t,r){return Qg(e,-t,r)}function zs(e,t,r){return Jg(e,-t,r)}var z=u(G(),1),Be=u(H(),1),It=u(qo(),1);var hd=u(R(),1),qe={Name:(0,hd.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,hd.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function yv(e,t){switch(t){case"days":return Go(new Date,e);case"weeks":return xv(new Date,e);case"months":return Hs(new Date,e);case"years":return zs(new Date,e);default:return new Date}}var Sv={label:(0,z.__)("Is none of"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),qe),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},Ws=[{name:Ve,label:(0,z.__)("Includes"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),qe),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Re,...Sv},{name:pt,label:(0,z.__)("Includes all"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),qe),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:tt,...Sv},{name:St,label:(0,z.__)("Between (inc)"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),qe),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:Ct,label:(0,z.__)("In the past"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),qe),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=yv(r.value,r.unit),n=(0,It.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:Mt,label:(0,z.__)("Over"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),qe),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=yv(r.value,r.unit);return(0,It.getDate)(t.getValue({item:e}))(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:De,label:(0,z.__)("Is not"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is not: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:$r,label:(0,z.__)("Less than"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is less than: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is greater than: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:Zr,label:(0,z.__)("Less than or equal"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:Xr,label:(0,z.__)("Greater than or equal"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),qe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:Qr,label:(0,z.__)("Before"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is before: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r);return(0,It.getDate)(t.getValue({item:e}))(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is after: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r);return(0,It.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:eo,label:(0,z.__)("Before (inc)"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is on or before: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r);return(0,It.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:to,label:(0,z.__)("After (inc)"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is on or after: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r);return(0,It.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:sr,label:(0,z.__)("Contains"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s contains: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:lr,label:(0,z.__)("Doesn't contain"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:ur,label:(0,z.__)("Starts with"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s starts with: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:ro,label:(0,z.__)("On"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r),n=(0,It.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:oo,label:(0,z.__)("Not on"),filterText:(e,t)=>(0,Be.createInterpolateElement)((0,z.sprintf)((0,z.__)("%1$s is not: %2$s"),e.name,t[0].label),qe),filter(e,t,r){if(r===void 0)return!0;let o=(0,It.getDate)(r),n=(0,It.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],Uo=e=>Ws.find(t=>t.name===e),Cv=()=>Ws.map(e=>e.name),Tv=e=>Ws.filter(t=>t.selection==="single").some(t=>t.name===e),Ev=e=>Ws.some(t=>t.name===e);var ut=u(R(),1),jy="Enter",Hy=" ",zy=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=Uo(t?.operator);return o!==void 0?o.filterText(r,e):(0,Lr.sprintf)((0,Lr.__)("Unknown status for %1$s"),r.name)};function Wy({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:Uo(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,ut.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,ut.jsx)(rr.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,ut.jsx)(rr.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Lr.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,c=n?[...(t.filters??[]).map(f=>{if(f.field===e.field){let d=Uo(l)?.selection,m=Uo(s)?.selection,p=d!==m||[d,m].includes("custom");return{...f,value:p?void 0:f.value,operator:s}}return f})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:c})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Pv({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,Gs.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(x=>x.field===i.field),c=[],f=(0,Gs.useMemo)(()=>{let x=r.find(y=>y.id===i.field);return x&&{...x,getValue:({item:y})=>y[x.id]}},[r,i.field]),{elements:d}=ht({elements:i.elements,getElements:i.getElements});if(d.length>0)c=d.filter(x=>i.singleSelection?x.value===l?.value:l?.value?.includes(x.value));else if(Array.isArray(l?.value)){let x=l.value.map(y=>f?.getValueFormatted({item:{[f.id]:y},field:f})||String(y));c=[{value:l.value,label:x}]}else if(typeof l?.value=="object")c=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let x=f!==void 0?f.getValueFormatted({item:{[f.id]:l.value},field:f}):String(l.value);c=[{value:l.value,label:x}]}let m=i.isPrimary,p=l?.isLocked,g=!p&&l?.value!==void 0,b=!p&&(!m||g);return(0,ut.jsx)(rr.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:x,onToggle:y})=>(0,ut.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,ut.jsx)(rr.Tooltip,{text:(0,Lr.sprintf)((0,Lr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,ut.jsx)("div",{className:Y("dataviews-filters__summary-chip",{"has-reset":b,"has-values":g,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||y()},onKeyDown:w=>{!p&&[jy,Hy].includes(w.key)&&(y(),w.preventDefault())},"aria-disabled":p,"aria-pressed":x,"aria-expanded":x,ref:n,children:(0,ut.jsx)(zy,{activeElements:c,filterInView:l,filter:i})})}),b&&(0,ut.jsx)(rr.Tooltip,{text:m?(0,Lr.__)("Reset"):(0,Lr.__)("Remove"),placement:"top",children:(0,ut.jsx)("button",{className:Y("dataviews-filters__summary-chip-remove",{"has-values":g}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(w=>w.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,ut.jsx)(rr.Icon,{icon:Xn})})})]}),renderContent:()=>(0,ut.jsxs)(L,{direction:"column",justify:"flex-start",children:[(0,ut.jsx)(Wy,{...o}),o.filter.hasElements?(0,ut.jsx)(jg,{...o,filter:{...o.filter,elements:d}}):(0,ut.jsx)(Ug,{...o,fields:r})]})})}var qs=u(q(),1),Ov=u(G(),1),Av=u(H(),1);var Br=u(R(),1),{Menu:Fi}=ee(qs.privateApis);function bd({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Br.jsxs)(Fi,{children:[(0,Br.jsx)(Fi.TriggerButton,{...n}),(0,Br.jsx)(Fi.Popover,{children:i.map(a=>(0,Br.jsx)(Fi.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Br.jsx)(Fi.ItemLabel,{children:a.name})},a.field))})]})}function Gy({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Br.jsx)(bd,{triggerProps:{render:(0,Br.jsx)(qs.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Ov.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var Iv=(0,Av.forwardRef)(Gy);var Vv=u(q(),1),Rv=u(G(),1),kv=u(R(),1);function Nv({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,kv.jsx)(Vv.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,Rv.__)("Reset")})}var Dv=u(H(),1);function qy(e,t){return(0,Dv.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>Tv(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&Ev(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var Li=qy;var Bi=u(R(),1);function Uy({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,En.useContext)(K),a=(0,En.useRef)(null),s=Li(t,r),l=(0,Bi.jsx)(Iv,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),c=s.filter(d=>d.isVisible);if(c.length===0)return null;let f=[...c.map(d=>(0,Bi.jsx)(Pv,{filter:d,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},d.field)),l];return f.push((0,Bi.jsx)(Nv,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,Bi.jsx)(L,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:f})}var ji=(0,En.memo)(Uy);var bo=u(H(),1),Mv=u(q(),1);var Us=u(G(),1);var br=u(R(),1);function Yy(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,bo.useContext)(K),a=(0,bo.useRef)(null),s=(0,bo.useCallback)(p=>{r(p),i(!0)},[r,i]),c=!!e.filter(p=>p.isVisible).length;if(e.length===0)return null;let f={label:(0,Us.__)("Add filter"),"aria-expanded":!1,isPressed:!1},d={label:(0,Us._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=(0,br.jsx)(Mv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Jn,...c?d:f});return(0,br.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:c?(0,br.jsx)($y,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,br.jsx)(bd,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:m}})})}function $y({buttonRef:e,filtersCount:t,children:r}){return(0,bo.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,br.jsxs)(br.Fragment,{children:[r,!!t&&(0,br.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var Ys=Yy;var Fv=u(H(),1);var Lv=u(R(),1);function Ky(e){let{isShowingFilter:t}=(0,Fv.useContext)(K);return t?(0,Lv.jsx)(ji,{...e}):null}var $s=Ky;var Bv=u(H(),1),jv=u(G(),1);var _d=u(R(),1);function xd({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,view:s,onChangeView:l,selection:c,onChangeSelection:f,setOpenedFilter:d,onClickItem:m,isItemClickable:p,renderItemLink:g,defaultLayouts:b,empty:x=(0,_d.jsx)("p",{children:(0,jv.__)("No results")})}=(0,Bv.useContext)(K),y=uo.find(w=>w.type===s.type&&b[w.type])?.component;return(0,_d.jsx)(y,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,onChangeView:l,onChangeSelection:f,selection:c,setOpenedFilter:d,onClickItem:m,renderItemLink:g,isItemClickable:p,view:s,empty:x})}var Hv=u(H(),1);var Hi=u(R(),1),Zy=[];function wd(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=Zy}=(0,Hv.useContext)(K),i=on(n,o)&&[Jo,Ya].includes(e.type);return!t||!r||r<=1&&!i?null:!!t&&(0,Hi.jsxs)(L,{direction:"row",justify:"end",align:"center",className:"dataviews-footer",gap:"sm",children:[i&&(0,Hi.jsx)(Xa,{}),(0,Hi.jsx)(If,{})]})}var zv=u(G(),1),or=u(H(),1),Wv=u(q(),1),Gv=u(yt(),1);var qv=u(R(),1),Xy=(0,or.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,or.useContext)(K),[n,i,a]=(0,Gv.useDebouncedInput)(r.search);(0,or.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,or.useRef)(o),l=(0,or.useRef)(r);(0,or.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,or.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let c=t||(0,zv.__)("Search");return(0,qv.jsx)(Wv.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:c,placeholder:c,size:"compact"})}),yd=Xy;var Ae=u(q(),1),_o=u(G(),1),_r=u(H(),1);var Cd=u(Yv(),1),Qv=u(yt(),1);var $v=u(q(),1),Sd=u(G(),1),Kv=u(H(),1);var Zv=u(R(),1);function Xv(){let e=(0,Kv.useContext)(K),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,Zv.jsx)($v.ToggleControl,{label:(0,Sd.__)("Enable infinite scroll"),help:(0,Sd.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var ae=u(R(),1),{Menu:zi}=ee(Ae.privateApis),Qy={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function Td(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,_r.useContext)(K),o=Object.keys(r);if(o.length<=1)return null;let n=uo.find(i=>e.type===i.type);return(0,ae.jsxs)(zi,{children:[(0,ae.jsx)(zi.TriggerButton,{render:(0,ae.jsx)(Ae.Button,{size:"compact",icon:n?.icon,label:(0,_o.__)("Layout")})}),(0,ae.jsx)(zi.Popover,{children:o.map(i=>{let a=uo.find(s=>s.type===i);return a?(0,ae.jsx)(zi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,Cd.default)("Invalid dataview")},children:(0,ae.jsx)(zi.ItemLabel,{children:a.label})},i):null})})]})}function Jy(){let{view:e,fields:t,onChangeView:r}=(0,_r.useContext)(K),o=(0,_r.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,ae.jsx)(Ae.SelectControl,{__next40pxDefaultSize:!0,label:(0,_o.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function e1(){let{view:e,fields:t,onChangeView:r}=(0,_r.useContext)(K);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,ae.jsx)(Ae.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,_o.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,Cd.default)("Invalid direction")},children:Ga.map(i=>(0,ae.jsx)(Ae.__experimentalToggleGroupControlOptionIcon,{value:i,icon:Hm[i],label:Ua[i]},i))})}function t1(){let{view:e,config:t,onChangeView:r}=(0,_r.useContext)(K),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,ae.jsx)(Ae.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,_o.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,ae.jsx)(Ae.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function r1({title:e,description:t,children:r}){return(0,ae.jsxs)(Ae.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,ae.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,ae.jsx)(Ae.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,ae.jsx)(Ae.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,ae.jsx)(Ae.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:r})]})}function Ed(){let{view:e}=(0,_r.useContext)(K),t=(0,Qv.useInstanceId)(Jv,"dataviews-view-config-dropdown"),r=uo.find(o=>o.type===e.type);return(0,ae.jsx)(Ae.Dropdown,{expandOnMobile:!0,popoverProps:{...Qy,id:t},renderToggle:({onToggle:o,isOpen:n})=>(0,ae.jsx)(Ae.Button,{size:"compact",icon:pu,label:(0,_o._x)("View options","View is used as a noun"),onClick:o,"aria-expanded":n?"true":"false","aria-controls":t}),renderContent:()=>(0,ae.jsx)(Ae.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,ae.jsx)(L,{direction:"column",className:"dataviews-view-config",gap:"xl",children:(0,ae.jsxs)(r1,{title:(0,_o.__)("Appearance"),children:[(0,ae.jsxs)(L,{direction:"row",gap:"sm",className:"is-divided-in-two",children:[(0,ae.jsx)(Jy,{}),(0,ae.jsx)(e1,{})]}),!!r?.viewConfigOptions&&(0,ae.jsx)(r.viewConfigOptions,{}),(0,ae.jsx)(Xv,{}),(0,ae.jsx)(t1,{}),(0,ae.jsx)(es,{})]})})})})}function Jv(){return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(Td,{}),(0,ae.jsx)(Ed,{})]})}var o1=(0,_r.memo)(Jv),eh=o1;var th=u(q(),1),rh=u(H(),1);function Se(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var oh=u(R(),1),{ValidatedCheckboxControl:n1}=ee(th.privateApis);function nh({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:c,isValid:f}=e,d=(0,rh.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,oh.jsx)(n1,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:Se(f,i),hidden:o,label:l,help:c,checked:a({item:r}),onChange:d})}var Ks=u(q(),1),ih=u(H(),1);var Pd=u(R(),1),{ValidatedComboboxControl:i1}=ee(Ks.privateApis);function ah({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:c,isValid:f}=t,d=l({item:e})??"",m=(0,ih.useCallback)(b=>r(c({item:e,value:b??""})),[e,r,c]),{elements:p,isLoading:g}=ht({elements:t.elements,getElements:t.getElements});return g?(0,Pd.jsx)(Ks.Spinner,{}):(0,Pd.jsx)(i1,{required:!!t.isValid?.required,customValidity:Se(f,n),label:i,value:d,help:a,placeholder:s,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var Qs=u(q(),1),Qt=u(H(),1),Xs=u(G(),1),Ad=u(qo(),1);var On=u(q(),1),Od=u(H(),1),xr=u(G(),1);var Pn=u(R(),1),a1={[Ct]:[{value:"days",label:(0,xr.__)("Days")},{value:"weeks",label:(0,xr.__)("Weeks")},{value:"months",label:(0,xr.__)("Months")},{value:"years",label:(0,xr.__)("Years")}],[Mt]:[{value:"days",label:(0,xr.__)("Days ago")},{value:"weeks",label:(0,xr.__)("Weeks ago")},{value:"months",label:(0,xr.__)("Months ago")},{value:"years",label:(0,xr.__)("Years ago")}]};function Zs({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=a1[i===Ct?"inThePast":"over"],{id:s,label:l,getValue:c,setValue:f}=r,d=c({item:t}),{value:m="",unit:p=a[0].value}=d&&typeof d=="object"?d:{},g=(0,Od.useCallback)(x=>o(f({item:t,value:{value:Number(x),unit:p}})),[o,f,t,p]),b=(0,Od.useCallback)(x=>o(f({item:t,value:{value:m,unit:x}})),[o,f,t,m]);return(0,Pn.jsx)(On.BaseControl,{id:s,className:Y(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,Pn.jsxs)(L,{direction:"row",gap:"sm",children:[(0,Pn.jsx)(On.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:g}),(0,Pn.jsx)(On.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,xr.__)("Unit"),value:p,options:a,onChange:b,hideLabelFromVision:!0})]})})}var sh=u(qo(),1);function An(e){if(!e)return null;let t=(0,sh.getDate)(e);return t&&yn(t)?t:null}var xo=u(R(),1),{DateCalendar:s1,ValidatedInputControl:l1}=ee(Qs.privateApis),u1=e=>e?typeof e=="string"?e:Mi(e,"yyyy-MM-dd'T'HH:mm"):"";function c1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:c,getValue:f,isValid:d}=t,m=f({item:e}),p=typeof m=="string"?m:void 0,[g,b]=(0,Qt.useState)(()=>An(p)||new Date),x=(0,Qt.useRef)(null),y=(0,Qt.useRef)(),w=(0,Qt.useRef)(null),C=(0,Qt.useCallback)(D=>r(c({item:e,value:D})),[e,r,c]);(0,Qt.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]);let I=(0,Qt.useCallback)(D=>{let M;if(D){let T=D;if(p){let h=An(p);h&&(T=new Date(D),T.setHours(h.getHours()),T.setMinutes(h.getMinutes()))}M=T.toISOString(),C(M),y.current&&clearTimeout(y.current)}else C(void 0);w.current=x.current&&x.current.ownerDocument.activeElement,y.current=setTimeout(()=>{x.current&&(x.current.focus(),x.current.blur(),C(M),w.current&&w.current instanceof HTMLElement&&w.current.focus())},0)},[C,p]),A=(0,Qt.useCallback)(D=>{if(D){let M=new Date(D);C(M.toISOString());let T=An(M.toISOString());T&&b(T)}else C(void 0)},[C]),{format:V}=t,N=V.weekStartsOn??(0,Ad.getSettings)().l10n.startOfWeek,{timezone:{string:E}}=(0,Ad.getSettings)(),S=s;return d?.required&&!n&&!o?S=`${s} (${(0,Xs.__)("Required")})`:!d?.required&&n&&!o&&(S=`${s} (${(0,Xs.__)("Optional")})`),(0,xo.jsx)(Qs.BaseControl,{id:a,label:S,help:l,hideLabelFromVision:o,children:(0,xo.jsxs)(L,{direction:"column",gap:"lg",children:[(0,xo.jsx)(s1,{style:{width:"100%"},selected:p&&An(p)||void 0,onSelect:I,month:g,onMonthChange:b,timeZone:E||void 0,weekStartsOn:N}),(0,xo.jsx)(l1,{ref:x,__next40pxDefaultSize:!0,required:!!d?.required,customValidity:Se(d,i),type:"datetime-local",label:(0,Xs.__)("Date time"),hideLabelFromVision:!0,value:p?u1(An(p)||void 0):"",onChange:A})]})})}function lh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===Ct||i===Mt?(0,xo.jsx)(Zs,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,xo.jsx)(c1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var _t=u(q(),1),be=u(H(),1),Qe=u(G(),1),bt=u(qo(),1);var Ce=u(R(),1),{DateCalendar:d1,DateRangeCalendar:m1}=ee(_t.privateApis),f1=[{id:"today",label:(0,Qe.__)("Today"),getValue:()=>(0,bt.getDate)(null)},{id:"yesterday",label:(0,Qe.__)("Yesterday"),getValue:()=>{let e=(0,bt.getDate)(null);return Go(e,1)}},{id:"past-week",label:(0,Qe.__)("Past week"),getValue:()=>{let e=(0,bt.getDate)(null);return Go(e,7)}},{id:"past-month",label:(0,Qe.__)("Past month"),getValue:()=>{let e=(0,bt.getDate)(null);return Hs(e,1)}}],p1=[{id:"last-7-days",label:(0,Qe.__)("Last 7 days"),getValue:()=>{let e=(0,bt.getDate)(null);return[Go(e,7),e]}},{id:"last-30-days",label:(0,Qe.__)("Last 30 days"),getValue:()=>{let e=(0,bt.getDate)(null);return[Go(e,30),e]}},{id:"month-to-date",label:(0,Qe.__)("Month to date"),getValue:()=>{let e=(0,bt.getDate)(null);return[tv(e),e]}},{id:"last-year",label:(0,Qe.__)("Last year"),getValue:()=>{let e=(0,bt.getDate)(null);return[zs(e,1),e]}},{id:"year-to-date",label:(0,Qe.__)("Year to date"),getValue:()=>{let e=(0,bt.getDate)(null);return[Ls(e),e]}}],In=e=>{if(!e)return null;let t=(0,bt.getDate)(e);return t&&yn(t)?t:null},Id=e=>e?typeof e=="string"?e:Mi(e,"yyyy-MM-dd"):"";function uh({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,be.useState)(void 0),c=(0,be.useCallback)(()=>{let d=Array.isArray(r)?r:[r];for(let m of d){let p=m.current;if(p&&!p.validity.valid){l({type:"invalid",message:p.validationMessage});return}}l(void 0)},[r]);return(0,be.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=t?Se(a,t):void 0;for(let p of d){let g=p.current;g&&g.setCustomValidity(m?.type==="invalid"&&m.message?m.message:"")}},[r,a,t]),(0,be.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=p=>{p.preventDefault(),n(!0)};for(let p of d)p.current?.addEventListener("invalid",m);return()=>{for(let p of d)p.current?.removeEventListener("invalid",m)}},[r,n]),(0,be.useEffect)(()=>{if(!o)return;let d=t?Se(a,t):void 0;d?l(d):c()},[o,a,t,c]),(0,Ce.jsxs)("div",{onBlur:d=>{o||(!d.relatedTarget||!d.currentTarget.contains(d.relatedTarget))&&n(!0)},children:[i,(0,Ce.jsx)("div",{"aria-live":"polite",children:s&&(0,Ce.jsxs)("p",{className:Y("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,Ce.jsx)(_t.Icon,{className:"components-validated-control__indicator-icon",icon:_u,size:16,fill:"currentColor"}),s.message]})})]})}function g1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:c,isValid:f,format:d}=t,[m,p]=(0,be.useState)(null),g=d.weekStartsOn??(0,bt.getSettings)().l10n.startOfWeek,b=c({item:e}),x=typeof b=="string"?b:void 0,[y,w]=(0,be.useState)(()=>In(x)||new Date),[C,I]=(0,be.useState)(!1),A=(0,be.useRef)(null),V=(0,be.useCallback)(T=>r(l({item:e,value:T})),[e,r,l]),N=(0,be.useCallback)(T=>{let h=T?Mi(T,"yyyy-MM-dd"):void 0;V(h),p(null),I(!0)},[V]),E=(0,be.useCallback)(T=>{let h=T.getValue(),_=Id(h);w(h),V(_),p(T.id),I(!0)},[V]),S=(0,be.useCallback)(T=>{if(V(T),T){let h=In(T);h&&w(h)}p(null),I(!0)},[V]),{timezone:{string:D}}=(0,bt.getSettings)(),M=s;return f?.required&&!n?M=`${s} (${(0,Qe.__)("Required")})`:!f?.required&&n&&(M=`${s} (${(0,Qe.__)("Optional")})`),(0,Ce.jsx)(uh,{field:t,validity:i,inputRefs:A,isTouched:C,setIsTouched:I,children:(0,Ce.jsx)(_t.BaseControl,{id:a,className:"dataviews-controls__date",label:M,hideLabelFromVision:o,children:(0,Ce.jsxs)(L,{direction:"column",gap:"lg",children:[(0,Ce.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[f1.map(T=>{let h=m===T.id;return(0,Ce.jsx)(_t.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:h,size:"small",onClick:()=>E(T),children:T.label},T.id)}),(0,Ce.jsx)(_t.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Qe.__)("Custom")})]}),(0,Ce.jsx)(_t.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:A,type:"date",label:(0,Qe.__)("Date"),hideLabelFromVision:!0,value:x,onChange:S,required:!!t.isValid?.required}),(0,Ce.jsx)(d1,{style:{width:"100%"},selected:x&&In(x)||void 0,onSelect:N,month:y,onMonthChange:w,timeZone:D||void 0,weekStartsOn:g})]})})})}function v1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:c,format:f}=t,d,m=l({item:e});Array.isArray(m)&&m.length===2&&m.every(_=>typeof _=="string")&&(d=m);let p=f.weekStartsOn??(0,bt.getSettings)().l10n.startOfWeek,g=(0,be.useCallback)(_=>{r(c({item:e,value:_}))},[e,r,c]),[b,x]=(0,be.useState)(null),y=(0,be.useMemo)(()=>{if(!d)return{from:void 0,to:void 0};let[_,O]=d;return{from:In(_)||void 0,to:In(O)||void 0}},[d]),[w,C]=(0,be.useState)(()=>y.from||new Date),[I,A]=(0,be.useState)(!1),V=(0,be.useRef)(null),N=(0,be.useRef)(null),E=(0,be.useCallback)((_,O)=>{_&&O?g([Id(_),Id(O)]):!_&&!O&&g(void 0)},[g]),S=(0,be.useCallback)(_=>{E(_?.from,_?.to),x(null),A(!0)},[E]),D=(0,be.useCallback)(_=>{let[O,v]=_.getValue();C(O),E(O,v),x(_.id),A(!0)},[E]),M=(0,be.useCallback)((_,O)=>{let[v,k]=d||[void 0,void 0];if(E(_==="from"?O:v,_==="to"?O:k),O){let W=In(O);W&&C(W)}x(null),A(!0)},[d,E]),{timezone:T}=(0,bt.getSettings)(),h=s;return t.isValid?.required&&!n?h=`${s} (${(0,Qe.__)("Required")})`:!t.isValid?.required&&n&&(h=`${s} (${(0,Qe.__)("Optional")})`),(0,Ce.jsx)(uh,{field:t,validity:i,inputRefs:[V,N],isTouched:I,setIsTouched:A,children:(0,Ce.jsx)(_t.BaseControl,{id:a,className:"dataviews-controls__date",label:h,hideLabelFromVision:o,children:(0,Ce.jsxs)(L,{direction:"column",gap:"lg",children:[(0,Ce.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[p1.map(_=>{let O=b===_.id;return(0,Ce.jsx)(_t.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:O,size:"small",onClick:()=>D(_),children:_.label},_.id)}),(0,Ce.jsx)(_t.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!b,size:"small",accessibleWhenDisabled:!1,disabled:!!b,children:(0,Qe.__)("Custom")})]}),(0,Ce.jsxs)(L,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,Ce.jsx)(_t.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:V,type:"date",label:(0,Qe.__)("From"),hideLabelFromVision:!0,value:d?.[0],onChange:_=>M("from",_),required:!!t.isValid?.required}),(0,Ce.jsx)(_t.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:N,type:"date",label:(0,Qe.__)("To"),hideLabelFromVision:!0,value:d?.[1],onChange:_=>M("to",_),required:!!t.isValid?.required})]}),(0,Ce.jsx)(m1,{style:{width:"100%"},selected:y,onSelect:S,month:w,onMonthChange:C,timeZone:T.string||void 0,weekStartsOn:p})]})})})}function ch({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===Ct||i===Mt?(0,Ce.jsx)(Zs,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===St?(0,Ce.jsx)(v1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,Ce.jsx)(g1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var el=u(q(),1);var dh=u(q(),1),mh=u(H(),1);var fh=u(R(),1),{ValidatedInputControl:h1}=ee(dh.privateApis);function wr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:c,placeholder:f,description:d,getValue:m,setValue:p,isValid:g}=t,b=m({item:e}),x=(0,mh.useCallback)(y=>r(p({item:e,value:y})),[e,p,r]);return(0,fh.jsx)(h1,{required:!!g.required,markWhenOptional:n,customValidity:Se(g,l),label:c,placeholder:f,value:b??"",help:d,onChange:x,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:g.pattern?g.pattern.constraint:void 0,minLength:g.minLength?g.minLength.constraint:void 0,maxLength:g.maxLength?g.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var Js=u(R(),1);function ph({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,Js.jsx)(wr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,Js.jsx)(el.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,Js.jsx)(el.Icon,{icon:hu})})})}var rl=u(q(),1);var tl=u(R(),1);function gh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,tl.jsx)(wr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,tl.jsx)(rl.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,tl.jsx)(rl.Icon,{icon:Nu})})})}var nl=u(q(),1);var ol=u(R(),1);function vh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ol.jsx)(wr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,ol.jsx)(nl.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ol.jsx)(nl.Icon,{icon:Au})})})}var jr=u(q(),1),Wi=u(H(),1),il=u(G(),1);var wo=u(R(),1),{ValidatedNumberControl:b1}=ee(jr.privateApis);function hh(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function _1({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,Wi.useCallback)(l=>t([hh(l),i]),[t,i]),s=(0,Wi.useCallback)(l=>t([n,hh(l)]),[t,n]);return(0,wo.jsx)(jr.BaseControl,{help:(0,il.__)("The max. value must be greater than the min. value."),children:(0,wo.jsxs)(jr.Flex,{direction:"row",gap:4,children:[(0,wo.jsx)(jr.__experimentalNumberControl,{label:(0,il.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,wo.jsx)(jr.__experimentalNumberControl,{label:(0,il.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function al({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:c,description:f,getValue:d,setValue:m,isValid:p}=t,g=d({item:e})??"",b=(0,Wi.useCallback)(y=>{r(m({item:e,value:["",void 0].includes(y)?void 0:Number(y)}))},[e,r,m]),x=(0,Wi.useCallback)(y=>{r(m({item:e,value:y}))},[e,r,m]);if(i===St){let y=["",""];return Array.isArray(g)&&g.length===2&&g.every(w=>typeof w=="number"||w==="")&&(y=g),(0,wo.jsx)(_1,{value:y,onChange:x,hideLabelFromVision:o,step:l})}return(0,wo.jsx)(b1,{required:!!p.required,markWhenOptional:n,customValidity:Se(p,a),label:c,help:f,value:g,onChange:b,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var bh=u(R(),1);function _h(e){return(0,bh.jsx)(al,{...e})}var xh=u(R(),1);function wh(e){return(0,xh.jsx)(al,{...e})}var sl=u(q(),1),yh=u(H(),1);var Vd=u(R(),1),{ValidatedRadioControl:x1}=ee(sl.privateApis);function Sh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:f}=t,{elements:d,isLoading:m}=ht({elements:t.elements,getElements:t.getElements}),p=l({item:e}),g=(0,yh.useCallback)(b=>r(c({item:e,value:b})),[e,r,c]);return m?(0,Vd.jsx)(sl.Spinner,{}):(0,Vd.jsx)(x1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:Se(f,i),label:a,help:s,onChange:g,options:d,selected:p,hideLabelFromVision:o})}var ll=u(q(),1),Ch=u(H(),1);var Rd=u(R(),1),{ValidatedSelectControl:w1}=ee(ll.privateApis);function Th({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:c,setValue:f,isValid:d}=t,m=a==="array",p=c({item:e})??(m?[]:""),g=(0,Ch.useCallback)(y=>r(f({item:e,value:y})),[e,r,f]),{elements:b,isLoading:x}=ht({elements:t.elements,getElements:t.getElements});return x?(0,Rd.jsx)(ll.Spinner,{}):(0,Rd.jsx)(w1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:Se(d,i),label:s,value:p,help:l,options:b,onChange:g,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var kd=u(H(),1);var Eh=u(R(),1);function Ph({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,Eh.jsx)(wr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,kd.createElement)(s):void 0,suffix:l?(0,kd.createElement)(l):void 0})}var Oh=u(q(),1),Ah=u(H(),1);var Ih=u(R(),1),{ValidatedToggleControl:y1}=ee(Oh.privateApis);function Vh({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:f}=e,d=(0,Ah.useCallback)(()=>{t(c({item:r,value:!l({item:r})}))},[t,c,r,l]);return(0,Ih.jsx)(y1,{required:!!f.required,markWhenOptional:n,customValidity:Se(f,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:d})}var Rh=u(q(),1),kh=u(H(),1);var Nh=u(R(),1),{ValidatedTextareaControl:S1}=ee(Rh.privateApis);function Dh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:c,description:f,setValue:d,isValid:m}=t,p=t.getValue({item:e}),g=(0,kh.useCallback)(b=>r(d({item:e,value:b})),[e,r,d]);return(0,Nh.jsx)(S1,{required:!!m.required,markWhenOptional:n,customValidity:Se(m,a),label:l,placeholder:c,value:p??"",help:f,onChange:g,rows:s,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var Vn=u(q(),1),Mh=u(H(),1);var ul=u(R(),1),{ValidatedToggleGroupControl:C1}=ee(Vn.privateApis);function Fh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,c=a({item:e}),f=(0,Mh.useCallback)(g=>r(s({item:e,value:g})),[e,r,s]),{elements:d,isLoading:m}=ht({elements:t.elements,getElements:t.getElements});if(m)return(0,ul.jsx)(Vn.Spinner,{});if(d.length===0)return null;let p=d.find(g=>g.value===c);return(0,ul.jsx)(C1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:Se(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:f,value:c,hideLabelFromVision:o,children:d.map(g=>(0,ul.jsx)(Vn.__experimentalToggleGroupControlOption,{label:g.label,value:g.value},g.value))})}var cl=u(q(),1),dl=u(H(),1);var Gi=u(R(),1),{ValidatedFormTokenField:T1}=ee(cl.privateApis);function Lh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:c,isValid:f}=t,d=l({item:e}),{elements:m,isLoading:p}=ht({elements:t.elements,getElements:t.getElements}),g=(0,dl.useMemo)(()=>Array.isArray(d)?d.map(x=>m?.find(w=>w.value===x)||{value:x,label:x}):[],[d,m]),b=(0,dl.useCallback)(x=>{let y=x.map(w=>typeof w=="object"&&"value"in w?w.value:w);r(c({item:e,value:y}))},[r,c,e]);return p?(0,Gi.jsx)(cl.Spinner,{}):(0,Gi.jsx)(T1,{required:!!f?.required,markWhenOptional:n,customValidity:Se(f,i),label:o?void 0:a,value:g,onChange:b,placeholder:s,suggestions:m?.map(x=>x.value),__experimentalValidateInput:x=>t.isValid?.elements&&m?m.some(y=>y.value===x||y.label===x):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:x=>typeof x=="object"&&"label"in x?x.label:typeof x=="string"&&m&&m.find(w=>w.value===x)?.label||x,__experimentalRenderItem:({item:x})=>{if(typeof x=="string"&&m){let y=m.find(w=>w.value===x);return(0,Gi.jsx)("span",{children:y?.label||x})}return(0,Gi.jsx)("span",{children:x})}})}var E1={grad:.9,turn:360,rad:360/(2*Math.PI)},Hr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},nt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},Jt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Yh=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Bh=function(e){return{r:Jt(e.r,0,255),g:Jt(e.g,0,255),b:Jt(e.b,0,255),a:Jt(e.a)}},Nd=function(e){return{r:nt(e.r),g:nt(e.g),b:nt(e.b),a:nt(e.a,3)}},P1=/^#([0-9a-f]{3,8})$/i,ml=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},$h=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},Kh=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),c=i%6;return{r:255*[o,s,a,a,l,o][c],g:255*[l,o,o,s,a,a][c],b:255*[a,a,l,o,o,s][c],a:n}},jh=function(e){return{h:Yh(e.h),s:Jt(e.s,0,100),l:Jt(e.l,0,100),a:Jt(e.a)}},Hh=function(e){return{h:nt(e.h),s:nt(e.s),l:nt(e.l),a:nt(e.a,3)}},zh=function(e){return Kh((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},qi=function(e){return{h:(t=$h(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},O1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,I1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,V1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wh={string:[[function(e){var t=P1.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?nt(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?nt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=I1.exec(e)||V1.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Bh({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=O1.exec(e)||A1.exec(e);if(!t)return null;var r,o,n=jh({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(E1[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return zh(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return Hr(t)&&Hr(r)&&Hr(o)?Bh({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!Hr(t)||!Hr(r)||!Hr(o))return null;var a=jh({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return zh(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Hr(t)||!Hr(r)||!Hr(o))return null;var a=(function(s){return{h:Yh(s.h),s:Jt(s.s,0,100),v:Jt(s.v,0,100),a:Jt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return Kh(a)},"hsv"]]},Gh=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Nd(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?ml(nt(255*i)):"","#"+ml(r)+ml(o)+ml(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return Nd(this.rgba)},e.prototype.toRgbString=function(){return t=Nd(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return Hh(qi(this.rgba))},e.prototype.toHslString=function(){return t=Hh(qi(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=$h(this.rgba),{h:nt(t.h),s:nt(t.s),v:nt(t.v),a:nt(t.a,3)};var t},e.prototype.invert=function(){return ct({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),ct(Dd(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),ct(Dd(this.rgba,-t))},e.prototype.grayscale=function(){return ct(Dd(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),ct(qh(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),ct(qh(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"?ct({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):nt(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=qi(this.rgba);return typeof t=="number"?ct({h:t,s:r.s,l:r.l,a:r.a}):nt(r.h)},e.prototype.isEqual=function(t){return this.toHex()===ct(t).toHex()},e})(),ct=function(e){return e instanceof Uh?e:new Uh(e)};var Rn=u(q(),1),Fd=u(H(),1);var yo=u(R(),1),{ValidatedInputControl:k1,Picker:N1}=ee(Rn.privateApis),D1=({color:e,onColorChange:t})=>{let r=e&&ct(e).isValid()?e:"#ffffff";return(0,yo.jsx)(Rn.Dropdown,{renderToggle:({onToggle:o,isOpen:n})=>(0,yo.jsx)(Rn.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,yo.jsx)("button",{type:"button",onClick:o,style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",cursor:"pointer",outline:n?"2px solid #007cba":"none",outlineOffset:"2px",display:"flex",alignItems:"center",justifyContent:"center",padding:0,margin:0},"aria-label":"Open color picker"})}),renderContent:()=>(0,yo.jsx)("div",{style:{padding:"16px"},children:(0,yo.jsx)(N1,{color:ct(r),onChange:t,enableAlpha:!0})})})};function Zh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:c,isValid:f}=t,d=t.getValue({item:e})||"",m=(0,Fd.useCallback)(g=>{r(c({item:e,value:g.toHex()}))},[e,r,c]),p=(0,Fd.useCallback)(g=>{r(c({item:e,value:g||""}))},[e,r,c]);return(0,yo.jsx)(k1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:Se(f,i),label:a,placeholder:s,value:d,help:l,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,yo.jsx)(D1,{color:d,onColorChange:m})})}var pl=u(q(),1),gl=u(H(),1),Ld=u(G(),1);var fl=u(R(),1);function Xh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,gl.useState)(!1),l=(0,gl.useCallback)(()=>{s(c=>!c)},[]);return(0,fl.jsx)(wr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,fl.jsx)(pl.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,fl.jsx)(pl.Button,{icon:a?li:Qu,onClick:l,size:"small",label:a?(0,Ld.__)("Hide password"):(0,Ld.__)("Show password")})})})}function vl(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var Jh=u(R(),1),Qh={array:Lh,checkbox:nh,color:Zh,combobox:ah,datetime:lh,date:ch,email:ph,telephone:gh,url:vh,integer:_h,number:wh,password:Xh,radio:Sh,select:Th,text:Ph,toggle:Vh,textarea:Dh,toggleGroup:Fh};function M1(e){return e&&typeof e=="object"&&typeof e.control=="string"}function F1(e){let{control:t,...r}=e,o=hl(t);return o===null?null:function(i){return(0,Jh.jsx)(o,{...i,config:r})}}function eb(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?hl(e.Edit):M1(e.Edit)?F1(e.Edit):vl(e)&&e.type!=="array"?hl("select"):t===null?null:hl(t)}function hl(e){return Object.keys(Qh).includes(e)?Qh[e]:null}function L1(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var tb=L1;var B1=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},rb=B1;var j1=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},ob=j1;var ib=u(G(),1);function bl({item:e,field:t}){let{elements:r,isLoading:o}=ht({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var nb=u(R(),1);function je({item:e,field:t}){return t.hasElements?(0,nb.jsx)(bl,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var yr=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function He(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function Sr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function Cr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function Tr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Pe(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function H1({item:e,field:t}){return t.getValue({item:e})}var Vt=H1;var z1=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function W1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!z1.test(r)?(0,ib.__)("Value must be a valid email address."):null}var ab={type:"email",render:je,Edit:"email",sort:yr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ne,De,sr,lr,ur,Ve,Re,pt,tt],format:{},getValueFormatted:Vt,validate:{required:He,pattern:Tr,minLength:Sr,maxLength:Cr,elements:Pe,custom:W1}};var sb=u(G(),1);var kn=(e,t,r)=>r==="asc"?e-t:t-e;function _l(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function xl(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var lb={separatorThousand:","};function G1({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=lb:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function q1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,sb.__)("Value must be an integer."):null}var ub={type:"integer",render:je,Edit:"integer",sort:kn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ne,De,$r,Kr,Zr,Xr,St],validOperators:[Ne,De,$r,Kr,Zr,Xr,St,Ve,Re,pt,tt],format:lb,getValueFormatted:G1,validate:{required:He,min:_l,max:xl,elements:Pe,custom:q1}};var cb=u(G(),1);var db={separatorThousand:",",separatorDecimal:".",decimals:2};function U1({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=db:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,c]=s.split("."),f=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?f:f+i+c}function Y1(e){return e===""||e===void 0||e===null}function $1(e,t){let r=t.getValue({item:e});return!Y1(r)&&!Number.isFinite(r)?(0,cb.__)("Value must be a number."):null}var mb={type:"number",render:je,Edit:"number",sort:kn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ne,De,$r,Kr,Zr,Xr,St],validOperators:[Ne,De,$r,Kr,Zr,Xr,St,Ve,Re,pt,tt],format:db,getValueFormatted:U1,validate:{required:He,min:_l,max:xl,elements:Pe,custom:$1}};var fb={type:"text",render:je,Edit:"text",sort:yr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ne,De,sr,lr,ur,Ve,Re,pt,tt],format:{},getValueFormatted:Vt,validate:{required:He,pattern:Tr,minLength:Sr,maxLength:Cr,elements:Pe}};var Yo=u(qo(),1);var pb={datetime:(0,Yo.getSettings)().formats.datetime,weekStartsOn:(0,Yo.getSettings)().l10n.startOfWeek};function K1({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=pb:o=t.format,(0,Yo.dateI18n)(o.datetime,(0,Yo.getDate)(r))}var Z1=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},gb={type:"datetime",render:je,Edit:"datetime",sort:Z1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[ro,oo,Qr,Jr,eo,to,Ct,Mt],validOperators:[ro,oo,Qr,Jr,eo,to,Ct,Mt],format:pb,getValueFormatted:K1,validate:{required:He,elements:Pe}};var $o=u(qo(),1);var vb={date:(0,$o.getSettings)().formats.date,weekStartsOn:(0,$o.getSettings)().l10n.startOfWeek};function X1({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=vb:o=t.format,(0,$o.dateI18n)(o.date,(0,$o.getDate)(r))}var Q1=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},hb={type:"date",render:je,Edit:"date",sort:Q1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[ro,oo,Qr,Jr,eo,to,Ct,Mt,St],validOperators:[ro,oo,Qr,Jr,eo,to,Ct,Mt,St],format:vb,getValueFormatted:X1,validate:{required:He,elements:Pe}};var wl=u(G(),1);function bb(e,t){return t.getValue({item:e})===!0}function J1({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,wl.__)("True"):r===!1?(0,wl.__)("False"):""}function e2(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,wl.__)("Value must be true, false, or undefined"):null}var t2=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},_b={type:"boolean",render:je,Edit:"checkbox",sort:t2,validate:{required:bb,elements:Pe,custom:e2},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ne,De],validOperators:[Ne,De],format:{},getValueFormatted:J1};var xb={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Vt,validate:{}};var Bd=u(G(),1);function wb(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function yb({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function r2({item:e,field:t}){return yb({item:e,field:t})}function o2(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,Bd.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,Bd.__)("Every value must be a string.")}var n2=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},Sb={type:"array",render:r2,Edit:"array",sort:n2,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ve,Re,pt,tt],format:{},getValueFormatted:yb,validate:{required:wb,elements:Pe,custom:o2}};function i2({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Cb={type:"password",render:je,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:i2,validate:{required:He,pattern:Tr,minLength:Sr,maxLength:Cr,elements:Pe}};var Tb={type:"telephone",render:je,Edit:"telephone",sort:yr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ne,De,sr,lr,ur,Ve,Re,pt,tt],format:{},getValueFormatted:Vt,validate:{required:He,pattern:Tr,minLength:Sr,maxLength:Cr,elements:Pe}};var Eb=u(G(),1);var Nn=u(R(),1);function a2({item:e,field:t}){if(t.hasElements)return(0,Nn.jsx)(bl,{item:e,field:t});let r=Vt({item:e,field:t});return!r||!ct(r).isValid()?r:(0,Nn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,Nn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,Nn.jsx)("span",{children:r})]})}function s2(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!ct(r).isValid()?(0,Eb.__)("Value must be a valid color."):null}var l2=(e,t,r)=>{let o=ct(e),n=ct(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},Pb={type:"color",render:a2,Edit:"color",sort:l2,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ne,De,Ve,Re],format:{},getValueFormatted:Vt,validate:{required:He,elements:Pe,custom:s2}};var Ob={type:"url",render:je,Edit:"url",sort:yr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ne,De,sr,lr,ur,Ve,Re,pt,tt],format:{},getValueFormatted:Vt,validate:{required:He,pattern:Tr,minLength:Sr,maxLength:Cr,elements:Pe}};var u2=(e,t,r)=>typeof e=="number"&&typeof t=="number"?kn(e,t,r):yr(e,t,r),Ab={render:je,Edit:null,sort:u2,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ne,De],validOperators:Cv(),format:{},getValueFormatted:Vt,validate:{required:He,elements:Pe}};function Ib(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let c=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:c}}function Vb(e){return e.validOperators.reduce((t,r)=>{let o=Uo(r);return o?.filter&&(t[r]=o.filter),t},{})}function c2(e,t){return{...t.format,...e.format}}var Rb=c2;function d2(e){let t=[ab,ub,mb,fb,gb,hb,_b,xb,Sb,Cb,Tb,Pb,Ob].find(r=>r?.type===e);return t||Ab}function yl(e){return e.map(t=>{let r=d2(t.type),o=t.getValue||rb(t.id),n=function(i,a,s){let l=o({item:i}),c=o({item:a});return t.sort?t.sort(l,c,s):r.sort(l,c,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||ob(t.id),elements:t.elements,getElements:t.getElements,hasElements:vl(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:eb(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:Ib(t,r),filterBy:tb(t,r.defaultOperators,r.validOperators),filter:Vb(r),format:Rb(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var dt=u(R(),1),m2=e=>e.id,f2=()=>!0,p2=[],g2=uo.filter(e=>!e.isPicker);function v2({header:e,search:t=!0,searchLabel:r=void 0}){return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsxs)(L,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,dt.jsxs)(L,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,dt.jsx)(yd,{label:r}),(0,dt.jsx)(Ys,{})]}),(0,dt.jsxs)(L,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,dt.jsx)(eh,{}),e]})]}),(0,dt.jsx)($s,{className:"dataviews-filters__container"}),(0,dt.jsx)(xd,{}),(0,dt.jsx)(wd,{})]})}function h2({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=p2,data:a,getItemId:s=m2,getItemLevel:l,isLoading:c=!1,paginationInfo:f,defaultLayouts:d,selection:m,onChangeSelection:p,onClickItem:g,renderItemLink:b,isItemClickable:x=f2,header:y,children:w,config:C={perPageSizes:[10,20,50,100]},empty:I}){let{infiniteScrollHandler:A}=f,V=(0,Rt.useRef)(null),[N,E]=(0,Rt.useState)(0),S=(0,Sl.useResizeObserver)(ge=>{E(ge[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[D,M]=(0,Rt.useState)([]),T=m===void 0||p===void 0,h=T?D:m,[_,O]=(0,Rt.useState)(null);function v(ge){let Ie=typeof ge=="function"?ge(h):ge;T&&M(Ie),p&&p(Ie)}let k=(0,Rt.useMemo)(()=>yl(r),[r]),F=(0,Rt.useMemo)(()=>h.filter(ge=>a.some(Ie=>s(Ie)===ge)),[h,a,s]),P=Li(k,e),W=(0,Rt.useMemo)(()=>(P||[]).some(ge=>ge.isPrimary||ge.isLocked),[P]),[Z,Je]=(0,Rt.useState)(W);(0,Rt.useEffect)(()=>{W&&!Z&&Je(!0)},[W,Z]),(0,Rt.useEffect)(()=>{if(!e.infiniteScrollEnabled||!V.current)return;let ge=(0,Sl.throttle)($=>{let ke=$.target,et=ke.scrollTop,tr=ke.scrollHeight,qr=ke.clientHeight;et+qr>=tr-100&&A?.()},100),Ie=V.current;return Ie.addEventListener("scroll",ge),()=>{Ie.removeEventListener("scroll",ge),ge.cancel()}},[A,e.infiniteScrollEnabled]);let it=(0,Rt.useMemo)(()=>Object.fromEntries(Object.entries(d).filter(([ge])=>g2.some(Ie=>Ie.type===ge))),[d]);return it[e.type]?(0,dt.jsx)(K.Provider,{value:{view:e,onChangeView:t,fields:k,actions:i,data:a,isLoading:c,paginationInfo:f,selection:F,onChangeSelection:v,openedFilter:_,setOpenedFilter:O,getItemId:s,getItemLevel:l,isItemClickable:x,onClickItem:g,renderItemLink:b,containerWidth:N,containerRef:V,resizeObserverRef:S,defaultLayouts:it,filters:P,isShowingFilter:Z,setIsShowingFilter:Je,config:C,empty:I,hasInfiniteScrollHandler:!!A},children:(0,dt.jsx)("div",{className:"dataviews-wrapper",ref:V,children:w??(0,dt.jsx)(v2,{header:y,search:o,searchLabel:n})})}):null}var nr=h2;nr.BulkActionToolbar=Xa;nr.Filters=ji;nr.FiltersToggled=$s;nr.FiltersToggle=Ys;nr.Layout=xd;nr.LayoutSwitcher=Td;nr.Pagination=yc;nr.Search=yd;nr.ViewConfig=Ed;nr.Footer=wd;var Ui=nr;var Mb=u(ud(),1),Fb=u(Nb(),1);function Db(e=""){return(0,Mb.default)(e.trim().toLowerCase())}var b2=[];function Yi(e,t,r){if(!e)return{data:b2,paginationInfo:{totalItems:0,totalPages:0}};let o=yl(r),n=[...e];if(t.search){let c=Db(t.search);n=n.filter(f=>o.filter(d=>d.enableGlobalSearch).some(d=>{let m=d.getValue({item:f});return(Array.isArray(m)?m:[m]).some(g=>Db(String(g)).includes(c))}))}t.filters&&t.filters?.length>0&&t.filters.forEach(c=>{let f=o.find(d=>d.id===c.field);if(f){c.operator===tt&&(0,Fb.default)("The 'isNotAll' filter operator",{since:"7.0",alternative:"'isNone'"});let d=f.filter[c.operator];d&&(n=n.filter(m=>d(m,f,c.value)))}});let i=t.sort?.field?o.find(c=>c.enableSorting!==!1&&c.id===t.sort?.field):null,a=t.groupBy?.field?o.find(c=>c.enableSorting!==!1&&c.id===t.groupBy?.field):null;(i||a)&&n.sort((c,f)=>{if(a){let d=a.sort(c,f,t.groupBy?.direction??"asc");if(d!==0)return d}return i?i.sort(c,f,t.sort?.direction??"desc"):0});let s=n.length,l=1;if(t.page!==void 0&&t.perPage!==void 0){let c=(t.page-1)*t.perPage;s=n?.length||0,l=Math.ceil(s/t.perPage),n=n?.slice(c,c+t.perPage)}return{data:n,paginationInfo:{totalItems:s,totalPages:l}}}var Lb=u(H(),1),Bb=u(R(),1),jb=(0,Lb.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},i)=>(0,Bb.jsx)(o,{ref:i,className:Y("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));jb.displayName="NavigableRegion";var Hb=jb;var So=u(q(),1);var zb=u(q(),1),{Fill:Wb,Slot:Gb}=(0,zb.createSlotFill)("SidebarToggle");var zr=u(R(),1);function qb({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,zr.jsxs)(So.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,zr.jsxs)(So.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,zr.jsxs)(So.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,zr.jsx)(Gb,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,zr.jsx)(So.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,zr.jsx)(So.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,zr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var $i=u(R(),1);function Ub({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:s=!1,showSidebarToggle:l=!0}){let c=Y("admin-ui-page",i);return(0,$i.jsxs)(Hb,{className:c,ariaLabel:r,children:[(r||e||t)&&(0,$i.jsx)(qb,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:l}),s?(0,$i.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}Ub.SidebarToggleFill=Wb;var Ki=Ub;var Qd=u(er()),zn=u(q()),Jd=u(wt()),qt=u(H()),U_=u(jd()),Hn=u(G());var Kb=u(nc()),{lock:RL,unlock:xt}=(0,Kb.__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 Hd={type:"grid",perPage:20,sort:{field:"title",direction:"asc"},fields:["author","active","slug"],titleField:"title",descriptionField:"description",mediaField:"preview",filters:[]},Zb={...Hd,fields:["author"]},Cl={table:{showMedia:!1},grid:{showMedia:!0},list:{showMedia:!1}};function Xb(e){return e==="user"?{sort:{field:"date",direction:"desc"}}:e==="active"?{}:{filters:[{field:"author",operator:"isAny",value:[e]}]}}function Qb(e){return e==="all"?{}:{filters:[{field:"author",operator:"isAny",value:[e]}]}}var Jb=u(G());import{Preview as _2}from"@wordpress/lazy-editor";function x2({item:e}){let t=e.description;return React.createElement(_2,{content:e?.content?.raw,blocks:e?.blocks,description:t})}var Tl={label:(0,Jb.__)("Preview"),id:"preview",render:x2,enableSorting:!1};var El=u(q()),zd=u(G()),Pl=u(H()),e_=u(er()),t_=u(wt());function w2(e,t){let{author:r,authorText:o}=(0,t_.useSelect)(n=>{let{getUser:i,getEditedEntityRecord:a}=n(e_.store),s=a("postType",e,t);return{author:s?.author?i(s.author):null,authorText:s?.author_text}},[e,t]);return(0,Pl.useMemo)(()=>o?{text:o,icon:"admin-plugins"}:r?{text:r.name,icon:"admin-users",imageUrl:r.avatar_urls?.[48]}:{text:(0,zd.__)("Unknown"),icon:"admin-users"},[r,o])}function y2({item:e}){let[t,r]=(0,Pl.useState)(!1),{text:o,icon:n,imageUrl:i}=w2(e.type,e.id);return React.createElement(El.__experimentalHStack,{alignment:"left",spacing:0},i&&React.createElement("div",{className:Y("routes-template-list-author-field__avatar",{"is-loaded":t})},React.createElement("img",{onLoad:()=>r(!0),alt:"",src:i})),!i&&React.createElement("div",{className:"routes-template-list-author-field__icon"},React.createElement(El.Icon,{icon:n})),React.createElement("span",{className:"routes-template-list-author-field__name"},o))}var Ol={label:(0,zd.__)("Author"),id:"author",getValue:({item:e})=>e.author_text??e.author,render:y2};var o_=u(G()),n_=u(Zi()),i_=u(er());var{useEntityRecordsWithPermissions:S2}=xt(i_.privateApis);function C2(){let{records:e}=S2("root","registeredTemplate");return e?.filter(t=>!t.is_custom).map(t=>({slug:t.slug,title:t.title.rendered,description:t.description}))}var Al={label:(0,o_.__)("Description"),id:"description",render:function({item:t}){let o=C2()?.find(n=>n.slug===t.slug);return t.description?(0,n_.decodeEntities)(t.description):o?.description},enableSorting:!1,enableGlobalSearch:!0};var Dn=u(G()),a_=u(q());var{Badge:T2}=xt(a_.privateApis),s_={label:(0,Dn.__)("Status"),id:"active",type:"boolean",getValue:({item:e})=>e._isActive,render:function({item:t}){let r=t._isCustom?(0,Dn._x)("Active when used","template"):(0,Dn._x)("Active","template"),o=t._isCustom?"info":"success",n=t._isActive;return React.createElement(T2,{intent:n?o:"default"},n?r:(0,Dn._x)("Inactive","template"))}};var Il=u(G()),l_=u(er());var{useEntityRecordsWithPermissions:E2}=xt(l_.privateApis);function P2(){let{records:e}=E2("root","registeredTemplate");return e?.filter(t=>!t.is_custom).map(t=>({slug:t.slug,title:t.title.rendered,description:t.description}))}var u_={label:(0,Il.__)("Template Type"),id:"slug",getValue:({item:e})=>e.slug,render:function({item:t}){return P2()?.find(n=>n.slug===t.slug)?.title||(0,Il._x)("Custom","template type")}};var Wd=u(H()),d_=u(wt()),Xi=u(er());var{useEntityRecordsWithPermissions:c_}=xt(Xi.privateApis);function m_(e="active"){let{activeTemplatesOption:t,activeTheme:r,defaultTemplateTypes:o}=(0,d_.useSelect)(f=>{let{getEntityRecord:d,getCurrentTheme:m}=f(Xi.store);return{activeTemplatesOption:d("root","site")?.active_templates,activeTheme:m(),defaultTemplateTypes:f(Xi.store).getCurrentTheme()?.default_template_types}},[]),{records:n,isResolving:i}=c_("postType","wp_template",{per_page:-1,combinedTemplates:!1}),{records:a,isResolving:s}=c_("root","registeredTemplate",{per_page:-1}),l=(0,Wd.useMemo)(()=>{let f=[...a];if(t)for(let d in t){let m=t[d],p=n.find(g=>g.id===m&&g.theme===r.stylesheet);if(p){let g=f.findIndex(({slug:b})=>b===p.slug);g!==-1?f[g]=p:f.push(p)}}return f},[n,a,t,r]);return{records:(0,Wd.useMemo)(()=>{function f(m){return m.is_custom??(!m.meta?.is_wp_suggestion&&!o.some(p=>p.slug===m.slug))}let d;return e==="active"?d=l.filter(m=>!f(m)):e==="user"?d=n:d=a,d.map(m=>({...m,_isActive:l.some(p=>p.id===m.id),_isCustom:f(m)}))},[l,o,n,a,e]),isLoading:i||s,staticRecords:a,userRecords:n,activeTemplates:l}}var Gd=u(G());var f_=u(H()),Qi=u(wt()),Vl=u(er());function p_(){let e=(0,Qi.useSelect)(n=>n(Vl.store).getCurrentTheme()),{getEntityRecord:t}=(0,Qi.useSelect)(Vl.store),{editEntityRecord:r,saveEditedEntityRecord:o}=(0,Qi.useDispatch)(Vl.store);return(0,f_.useMemo)(()=>({id:"set-active-template",label(n){return n.some(i=>i._isActive)?(0,Gd.__)("Deactivate"):(0,Gd.__)("Activate")},isPrimary:!0,icon:ai,isEligible(n){return!e||n.theme!==e.stylesheet?!1:typeof n.id!="number"?n._isActive===!1:!0},async callback(n){let i=n.some(s=>s._isActive),a={...(await t("root","site"))?.active_templates??{}};for(let s of n)i?delete a[s.slug]:a[s.slug]=s.id;await r("root","site",void 0,{active_templates:a}),await o("root","site")}}),[r,o,t,e])}var mt=u(q()),H_=u(Zi()),ir=u(H()),jn=u(wt()),Rl=u(er()),z_=u(yt());var Dt=u(G()),W_=u(v_()),G_=u(qd());import{useNavigate as H2,useInvalidate as z2}from"@wordpress/route";var Wr=u(H()),Co=u(G()),ce=u(q()),O_=u(er()),A_=u(Zi()),I_=u(yt()),V_=u(qd()),R_=u(Ud());var Mn=u(wt()),Fn=u(er()),__=u(Zi()),kt=u(H()),pe=u(G());var x_=u(Ud()),O2="wp_template",A2={},I2=(e,t)=>{let r=e;return t.split(".").forEach(o=>{r=r?.[o]}),r};function Yd(e,t){return`${e}-${(0,x_.safeDecodeURI)(t)}`}function w_(e,t){return(e||[]).map(r=>({...r,name:(0,__.decodeEntities)(I2(r,t))}))}var $d=()=>(0,Mn.useSelect)(e=>e(Fn.store).getEntityRecords("postType",O2,{per_page:-1}),[]),Ji=()=>(0,Mn.useSelect)(e=>e(Fn.store).getCurrentTheme()?.default_template_types||[],[]),y_=()=>{let e=(0,Mn.useSelect)(t=>t(Fn.store).getPostTypes({per_page:-1}),[]);return(0,kt.useMemo)(()=>{let t=["attachment"];return e?.filter(({viewable:r,slug:o})=>r&&!t.includes(o)).sort((r,o)=>r.slug==="post"||o.slug==="post"?0:r.name.localeCompare(o.name))},[e])},V2=()=>{let e=(0,Mn.useSelect)(t=>t(Fn.store).getTaxonomies({per_page:-1}),[]);return(0,kt.useMemo)(()=>e?.filter(({visibility:t})=>t?.publicly_queryable),[e])};function S_(){let e=y_(),t=(0,kt.useMemo)(()=>e?.filter(i=>i.has_archive),[e]),r=$d(),o=(0,kt.useMemo)(()=>e?.reduce((i,{labels:a})=>{let s=a.singular_name.toLowerCase();return i[s]=(i[s]||0)+1,i},{}),[e]),n=(0,kt.useCallback)(({labels:i,slug:a})=>{let s=i.singular_name.toLowerCase();return o[s]>1&&s!==a},[o]);return(0,kt.useMemo)(()=>t?.filter(i=>!(r||[]).some(a=>a.slug==="archive-"+i.slug)).map(i=>{let a;return n(i)?a=(0,pe.sprintf)((0,pe.__)("Archive: %1$s (%2$s)"),i.labels.singular_name,i.slug):a=(0,pe.sprintf)((0,pe.__)("Archive: %s"),i.labels.singular_name),{slug:"archive-"+i.slug,description:(0,pe.sprintf)((0,pe.__)("Displays an archive with the latest posts of type: %s."),i.labels.singular_name),title:a,icon:typeof i.icon=="string"&&i.icon.startsWith("dashicons-")?i.icon.slice(10):$n,templatePrefix:"archive"}})||[],[t,r,n])}var C_=e=>{let t=y_(),r=Ji(),o=(0,kt.useMemo)(()=>t?.reduce((c,{labels:f})=>{let d=(f.template_name||f.singular_name).toLowerCase();return c[d]=(c[d]||0)+1,c},{}),[t]),n=(0,kt.useCallback)(({labels:c,slug:f})=>{let d=(c.template_name||c.singular_name).toLowerCase();return o[d]>1&&d!==f},[o]),i=(0,kt.useMemo)(()=>t?.reduce((c,{slug:f})=>{let d=f;return f!=="page"&&(d=`single-${d}`),c[f]=d,c},{}),[t]),a=Kd("postType",i),s=(t||[]).reduce((c,f)=>{let{slug:d,labels:m,icon:p}=f,g=i[d],b=r?.find(({slug:I})=>I===g),x=n(f),y=m.template_name||(0,pe.sprintf)((0,pe.__)("Single item: %s"),m.singular_name);x&&(y=m.template_name?(0,pe.sprintf)((0,pe._x)("%1$s (%2$s)","post type menu label"),m.template_name,d):(0,pe.sprintf)((0,pe._x)("Single item: %1$s (%2$s)","post type menu label"),m.singular_name,d));let w=b?{...b,templatePrefix:i[d]}:{slug:g,title:y,description:(0,pe.sprintf)((0,pe.__)("Displays a single item: %s."),m.singular_name),icon:typeof p=="string"&&p.startsWith("dashicons-")?p.slice(10):Gu,templatePrefix:i[d]},C=a?.[d]?.hasEntities;return C&&(w.onClick=I=>{e({type:"postType",slug:d,config:{recordNamePath:"title.rendered",queryArgs:({search:A})=>({_fields:"id,title,slug,link",orderBy:A?"relevance":"modified",exclude:a[d].existingEntitiesIds}),getSpecificTemplate:A=>{let V=Yd(i[d],A.slug);return{title:V,slug:V,templatePrefix:i[d]}}},labels:m,template:I})}),C&&c.push(w),c},[]);return(0,kt.useMemo)(()=>s.reduce((c,f)=>{let{slug:d}=f,m="postTypesMenuItems";return d==="page"&&(m="defaultPostTypesMenuItems"),c[m].push(f),c},{defaultPostTypesMenuItems:[],postTypesMenuItems:[]}),[s])},T_=e=>{let t=V2(),r=$d(),o=Ji(),n=(0,kt.useMemo)(()=>t?.reduce((d,{slug:m})=>{let p=m;return["category","post_tag"].includes(m)||(p=`taxonomy-${p}`),m==="post_tag"&&(p="tag"),d[m]=p,d},{}),[t]),i=t?.reduce((d,{labels:m})=>{let p=(m.template_name||m.singular_name).toLowerCase();return d[p]=(d[p]||0)+1,d},{}),a=(d,m)=>{if(["category","post_tag"].includes(m))return!1;let p=(d.template_name||d.singular_name).toLowerCase();return i[p]>1&&p!==m},s=Kd("taxonomy",n),l=(r||[]).map(({slug:d})=>d),c=(t||[]).reduce((d,m)=>{let{slug:p,labels:g}=m,b=n[p],x=o?.find(({slug:V})=>V===b),y=l?.includes(b),w=a(g,p),C=g.template_name||g.singular_name;w&&(C=g.template_name?(0,pe.sprintf)((0,pe._x)("%1$s (%2$s)","taxonomy template menu label"),g.template_name,p):(0,pe.sprintf)((0,pe._x)("%1$s (%2$s)","taxonomy menu label"),g.singular_name,p));let I=x?{...x,templatePrefix:n[p]}:{slug:b,title:C,description:(0,pe.sprintf)((0,pe.__)("Displays taxonomy: %s."),g.singular_name),icon:Kn,templatePrefix:n[p]},A=s?.[p]?.hasEntities;return A&&(I.onClick=V=>{e({type:"taxonomy",slug:p,config:{queryArgs:({search:N})=>({_fields:"id,name,slug,link",orderBy:N?"name":"count",exclude:s[p].existingEntitiesIds}),getSpecificTemplate:N=>{let E=Yd(n[p],N.slug);return{title:E,slug:E,templatePrefix:n[p]}}},labels:g,hasGeneralTemplate:y,template:V})}),(!y||A)&&d.push(I),d},[]);return(0,kt.useMemo)(()=>c.reduce((d,m)=>{let{slug:p}=m,g="taxonomiesMenuItems";return["category","tag"].includes(p)&&(g="defaultTaxonomiesMenuItems"),d[g].push(m),d},{defaultTaxonomiesMenuItems:[],taxonomiesMenuItems:[]}),[c])},R2={user:"author"},k2={user:{who:"authors"}};function E_(e){let t=$d(),r=Ji(),o=Kd("root",R2,k2),n=r?.find(({slug:a})=>a==="author");n||(n={description:(0,pe.__)("Displays latest posts written by a single author."),slug:"author",title:"Author"});let i=!!t?.find(({slug:a})=>a==="author");if(o.user?.hasEntities&&(n={...n,templatePrefix:"author"},n.onClick=a=>{e({type:"root",slug:"user",config:{queryArgs:({search:s})=>({_fields:"id,name,slug,link",orderBy:s?"name":"registered_date",exclude:o.user.existingEntitiesIds,who:"authors"}),getSpecificTemplate:s=>{let l=Yd("author",s.slug);return{title:(0,pe.sprintf)((0,pe.__)("Author: %s"),s.name),slug:l,templatePrefix:"author"}}},labels:{singular_name:(0,pe.__)("Author"),search_items:(0,pe.__)("Search Authors"),not_found:(0,pe.__)("No authors found."),all_items:(0,pe.__)("All Authors")},hasGeneralTemplate:i,template:a})}),!i||o.user?.hasEntities)return n}var Kd=(e,t,r=A2)=>{let o=(0,Mn.useSelect)(i=>Object.keys(t||{}).reduce((a,s)=>(a[s]=!!i(Fn.store).getEntityRecords(e,s,{per_page:1,_fields:"id",context:"view",...r[s]})?.length,a),{}),[t,e,r]);return(0,kt.useMemo)(()=>Object.keys(t||{}).reduce((i,a)=>(i[a]={hasEntities:o[a]},i),{}),[t,o])};var P_=[];function N2({suggestion:e,search:t,onSelect:r,entityForSuggestions:o}){let n="template-list-custom-template-modal__suggestions_list__list-item";return React.createElement(ce.Composite.Item,{render:React.createElement(ce.Button,{__next40pxDefaultSize:!0,role:"option",className:n,onClick:()=>r(o.config.getSpecificTemplate(e))})},React.createElement(ce.__experimentalText,{size:"body",lineHeight:1.53846153846,weight:500,className:`${n}__title`},React.createElement(ce.TextHighlight,{text:(0,A_.decodeEntities)(e.name),highlight:t})),e.link&&React.createElement(ce.__experimentalText,{size:"body",lineHeight:1.53846153846,className:`${n}__info`},(0,R_.safeDecodeURI)(e.link)))}function D2(e,t){let{config:r}=e,o=(0,Wr.useMemo)(()=>({order:"asc",context:"view",search:t,per_page:t?20:10,...r.queryArgs({search:t})}),[t,r]),{records:n,hasResolved:i}=(0,O_.useEntityRecords)(e.type,e.slug,o),[a,s]=(0,Wr.useState)(P_);return(0,Wr.useEffect)(()=>{if(!i)return;let l=P_;n?.length&&(l=n,r.recordNamePath&&(l=w_(l,r.recordNamePath))),s(l)},[n,i,r.recordNamePath]),a}function M2({entityForSuggestions:e,onSelect:t}){let[r,o,n]=(0,I_.useDebouncedInput)(),i=D2(e,n),{labels:a}=e,[s,l]=(0,Wr.useState)(!1);return!s&&i?.length>9&&l(!0),React.createElement(React.Fragment,null,s&&React.createElement(ce.SearchControl,{onChange:o,value:r,label:a.search_items,placeholder:a.search_items}),!!i?.length&&React.createElement(ce.Composite,{orientation:"vertical",role:"listbox",className:"template-list-custom-template-modal__suggestions_list","aria-label":(0,Co.__)("Suggestions list")},i.map(c=>React.createElement(N2,{key:c.slug,suggestion:c,search:n,onSelect:t,entityForSuggestions:e}))),n&&!i?.length&&React.createElement(ce.__experimentalText,{as:"p",className:"template-list-custom-template-modal__no-results"},a.not_found))}function F2({onSelect:e,entityForSuggestions:t,onBack:r,containerRef:o}){let[n,i]=(0,Wr.useState)(!1);return(0,Wr.useEffect)(()=>{if(o.current){let[a]=V_.focus.focusable.find(o.current);a?.focus()}},[n,o]),React.createElement(ce.__experimentalVStack,{spacing:4,className:"template-list-custom-template-modal__contents-wrapper",alignment:"left"},!n&&React.createElement(React.Fragment,null,React.createElement(ce.__experimentalText,{as:"p"},(0,Co.__)("Select whether to create a single template for all items or a specific one.")),React.createElement(ce.Flex,{className:"template-list-custom-template-modal__contents",gap:"4",align:"initial"},React.createElement(ce.FlexItem,{isBlock:!0,as:ce.Button,onClick:()=>{let{slug:a,title:s,description:l,templatePrefix:c}=t.template;e({slug:a,title:s,description:l,templatePrefix:c})}},React.createElement(ce.__experimentalText,{as:"span",weight:500,lineHeight:1.53846153846},t.labels.all_items),React.createElement(ce.__experimentalText,{as:"span",lineHeight:1.53846153846},(0,Co.__)("For all items"))),React.createElement(ce.FlexItem,{isBlock:!0,as:ce.Button,onClick:()=>{i(!0)}},React.createElement(ce.__experimentalText,{as:"span",weight:500,lineHeight:1.53846153846},t.labels.singular_name),React.createElement(ce.__experimentalText,{as:"span",lineHeight:1.53846153846},(0,Co.__)("For a specific item")))),React.createElement(ce.Flex,{justify:"right"},React.createElement(ce.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:r},(0,Co.__)("Back")))),n&&React.createElement(React.Fragment,null,React.createElement(ce.__experimentalText,{as:"p"},(0,Co.__)("This template will be used only for the specific item chosen.")),React.createElement(M2,{entityForSuggestions:t,onSelect:e}),React.createElement(ce.Flex,{justify:"right"},React.createElement(ce.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:()=>{t.hasGeneralTemplate?r():i(!1)}},(0,Co.__)("Back")))))}var k_=F2;var Ln=function(){return Ln=Object.assign||function(t){for(var r,o=1,n=arguments.length;o{s.current&&s.current.focus()},[]);async function l(c){if(c.preventDefault(),!i){a(!0);try{await e({slug:L_(r||n)||"wp-custom-template",title:r||n},!1)}finally{a(!1)}}}return React.createElement("form",{onSubmit:l},React.createElement(Gr.__experimentalVStack,{spacing:6},React.createElement(Gr.TextControl,{__next40pxDefaultSize:!0,label:(0,Bn.__)("Name"),value:r,onChange:o,placeholder:n,disabled:i,ref:s,help:(0,Bn.__)('Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.')}),React.createElement(Gr.__experimentalHStack,{className:"template-list-custom-generic-template__modal-actions",justify:"right"},React.createElement(Gr.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:t},(0,Bn.__)("Back")),React.createElement(Gr.Button,{__next40pxDefaultSize:!0,variant:"primary",type:"submit",isBusy:i,"aria-disabled":i},(0,Bn.__)("Create")))))}var B_=j2;var q_="wp_template",Zd=["front-page","home","single","page","index","archive","author","category","date","tag","search","404"],W2={"front-page":Eu,home:oc,single:zu,page:Bu,archive:$n,search:si,404:Lu,index:Vu,category:Qo,author:Qn,taxonomy:Kn,date:uu,tag:ec,attachment:Ru};function j_({title:e,direction:t,className:r,description:o,icon:n,onClick:i,children:a}){return React.createElement(mt.Button,{__next40pxDefaultSize:!0,className:r,onClick:i,label:o,showTooltip:!!o},React.createElement(mt.Flex,{as:"span",align:"center",justify:"center",style:{width:"100%"},direction:t},React.createElement("div",{className:"template-list-add-new-template__template-icon"},React.createElement(mt.Icon,{icon:n})),React.createElement(mt.__experimentalVStack,{className:"template-list-add-new-template__template-name",alignment:"center",spacing:0},React.createElement(mt.__experimentalText,{align:"center",weight:500,lineHeight:1.53846153846},e),a)))}var Nt={templatesList:1,customTemplate:2,customGenericTemplate:3};function G2({onClose:e}){let[t,r]=(0,ir.useState)(Nt.templatesList),[o,n]=(0,ir.useState)(),[i,a]=(0,ir.useState)(!1),s=U2(n,()=>r(Nt.customTemplate)),l=H2(),c=z2(),{saveEntityRecord:f}=(0,jn.useDispatch)(Rl.store),{createErrorNotice:d,createSuccessNotice:m}=(0,jn.useDispatch)(W_.store),p=(0,ir.useRef)(null),g=(0,z_.useViewportMatch)("medium","<"),b=(0,jn.useSelect)(I=>I(Rl.store).getEntityRecord("root","__unstableBase")?.home,[]),x={"front-page":b,date:(0,Dt.sprintf)((0,Dt.__)("E.g. %s"),b+"/"+new Date().getFullYear())};(0,ir.useEffect)(()=>{if(p.current&&t===Nt.templatesList){let[I]=G_.focus.focusable.find(p.current);I?.focus()}},[t]);async function y(I,A=!0){if(!i){a(!0);try{let{title:V,description:N,slug:E}=I,S=await f("postType",q_,{description:N,slug:E.toString(),status:"publish",title:V,meta:{is_wp_suggestion:A,is_inactive_by_default:!0}},{throwOnError:!0});l({to:`/types/wp_template/edit/${encodeURIComponent(String(S.id))}`}),c(),m((0,Dt.sprintf)((0,Dt.__)('"%s" successfully created.'),(0,H_.decodeEntities)(S.title?.rendered||V)||(0,Dt.__)("(no title)")),{type:"snackbar"})}catch(V){let N=V.message&&V.code!=="unknown_error"?V.message:(0,Dt.__)("An error occurred while creating the template.");d(N,{type:"snackbar"})}finally{a(!1)}}}let w=()=>{e(),r(Nt.templatesList)},C=(0,Dt.__)("Add template");return t===Nt.customTemplate&&o?C=(0,Dt.sprintf)((0,Dt.__)("Add template: %s"),o.labels.singular_name):t===Nt.customGenericTemplate&&(C=(0,Dt.__)("Create custom template")),React.createElement(mt.Modal,{title:C,className:Y("template-list-add-new-template__modal",{"template-list-add-new-template__modal_template_list":t===Nt.templatesList,"template-list-custom-template-modal":t===Nt.customTemplate}),onRequestClose:w,overlayClassName:t===Nt.customGenericTemplate?"template-list-custom-generic-template__modal":void 0,ref:p},t===Nt.templatesList&&React.createElement(mt.__experimentalGrid,{columns:g?2:3,gap:4,align:"flex-start",justify:"center",className:"template-list-add-new-template__template-list__contents"},React.createElement(mt.Flex,{className:"template-list-add-new-template__template-list__prompt"},(0,Dt.__)("Select what the new template should apply to:")),s.map(I=>{let{title:A,slug:V,onClick:N}=I;return React.createElement(j_,{key:V,title:A,direction:"column",className:"template-list-add-new-template__template-button",description:x[V],icon:W2[V]||ei,onClick:()=>N?N(I):y(I)})}),React.createElement(j_,{title:(0,Dt.__)("Custom template"),direction:"row",className:"template-list-add-new-template__custom-template-button",icon:ai,onClick:()=>r(Nt.customGenericTemplate)},React.createElement(mt.__experimentalText,{lineHeight:1.53846153846},(0,Dt.__)("A custom template can be manually applied to any post or page.")))),t===Nt.customTemplate&&o&&React.createElement(k_,{onSelect:y,entityForSuggestions:o,onBack:()=>r(Nt.templatesList),containerRef:p}),t===Nt.customGenericTemplate&&React.createElement(B_,{createTemplate:y,onBack:()=>r(Nt.templatesList)}))}function q2(){let[e,t]=(0,ir.useState)(!1),{postType:r}=(0,jn.useSelect)(o=>{let{getPostType:n}=o(Rl.store);return{postType:n(q_)}},[]);return r?React.createElement(React.Fragment,null,React.createElement(mt.Button,{variant:"primary",onClick:()=>t(!0),label:r.labels.add_new_item,size:"compact"},r.labels.add_new_item),e&&React.createElement(G2,{onClose:()=>t(!1)})):null}function U2(e,t){let o=(Ji()||[]).filter(m=>Zd.includes(m.slug)),n=m=>{t?.(),e(m)},i=[...o],{defaultTaxonomiesMenuItems:a,taxonomiesMenuItems:s}=T_(n),{defaultPostTypesMenuItems:l,postTypesMenuItems:c}=C_(n),f=E_(n);return[...a,...l,f].forEach(m=>{if(!m)return;let p=i.findIndex(g=>g.slug===m.slug);p>-1?i[p]=m:i.push(m)}),i?.sort((m,p)=>Zd.indexOf(m.slug)-Zd.indexOf(p.slug)),[...i,...S_(),...c,...s]}var kl=(0,ir.memo)(q2);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='f0c5e0b685']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","f0c5e0b685"),e.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-template-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}.routes-template-list-author-field__avatar{border-radius:50%;height:24px;margin-right:8px;opacity:0;overflow:hidden;transition:opacity .1s ease-in;width:24px}.routes-template-list-author-field__avatar.is-loaded{opacity:1}.routes-template-list-author-field__avatar img{height:100%;object-fit:cover;width:100%}.routes-template-list-author-field__icon{align-items:center;color:#757575;display:flex;height:24px;justify-content:center;margin-right:8px;width:24px}.routes-template-list-author-field__name{color:#1e1e1e}')),document.head.appendChild(e)}if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='0ccc4ccc5c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","0ccc4ccc5c"),e.appendChild(document.createTextNode(".template-list-custom-template-modal__contents-wrapper{height:100%;justify-content:flex-start!important}.template-list-custom-template-modal__contents-wrapper>*{width:100%}.template-list-custom-template-modal__contents-wrapper__suggestions_list{margin-left:-12px;margin-right:-12px;width:calc(100% + 24px)}.template-list-custom-template-modal__contents>.components-button{height:auto;justify-content:center}@media (min-width:782px){.template-list-custom-template-modal{width:456px}}@media (min-width:600px){.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list{max-height:224px;overflow-y:auto}}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item{display:block;height:auto;overflow-wrap:break-word;padding:8px 12px;text-align:left;white-space:pre-wrap;width:100%}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item mark{background:none;font-weight:700}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover *,.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:hover mark{color:var(--wp-admin-theme-color)}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:focus{background-color:#f0f0f0}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item:focus:not(:disabled){box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color) inset}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__info,.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__title{display:block;overflow:hidden;text-overflow:ellipsis}.template-list-custom-template-modal .template-list-custom-template-modal__suggestions_list__list-item__info{color:#757575;word-break:break-all}.template-list-custom-template-modal__no-results{border:1px solid #ccc;border-radius:2px;padding:16px}.template-list-custom-generic-template__modal .components-modal__header{border-bottom:none}.template-list-custom-generic-template__modal .components-modal__content:before{margin-bottom:4px}@media (min-width:960px){.template-list-add-new-template__modal{margin-top:64px;max-height:calc(100% - 128px);max-width:832px;width:calc(100% - 128px)}}.template-list-add-new-template__modal .template-list-add-new-template__custom-template-button svg,.template-list-add-new-template__modal .template-list-add-new-template__template-button svg{fill:var(--wp-admin-theme-color)}.template-list-add-new-template__modal .template-list-add-new-template__custom-template-button .template-list-add-new-template__template-name{align-items:flex-start;flex-grow:1}.template-list-add-new-template__modal .template-list-add-new-template__template-icon{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:100%;max-height:40px;max-width:40px;padding:8px}.template-list-add-new-template__template-list__contents>.components-button,.template-list-custom-template-modal__contents>.components-button{border:1px solid #ddd;display:flex;flex-direction:column;justify-content:center;outline:1px solid #0000;padding:32px}.template-list-add-new-template__template-list__contents>.components-button span:first-child,.template-list-custom-template-modal__contents>.components-button span:first-child{color:#1e1e1e}.template-list-add-new-template__template-list__contents>.components-button span,.template-list-custom-template-modal__contents>.components-button span{color:#757575}.template-list-add-new-template__template-list__contents>.components-button:hover,.template-list-custom-template-modal__contents>.components-button:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-color:#0000;color:var(--wp-admin-theme-color-darker-10)}.template-list-add-new-template__template-list__contents>.components-button:hover span,.template-list-custom-template-modal__contents>.components-button:hover span{color:var(--wp-admin-theme-color)}.template-list-add-new-template__template-list__contents>.components-button:focus,.template-list-custom-template-modal__contents>.components-button:focus{border-color:#0000;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:3px solid #0000}.template-list-add-new-template__template-list__contents>.components-button:focus span:first-child,.template-list-custom-template-modal__contents>.components-button:focus span:first-child{color:var(--wp-admin-theme-color)}.template-list-add-new-template__template-list__contents .template-list-add-new-template__custom-template-button,.template-list-add-new-template__template-list__contents .template-list-add-new-template__template-list__prompt,.template-list-custom-template-modal__contents .template-list-add-new-template__custom-template-button,.template-list-custom-template-modal__contents .template-list-add-new-template__template-list__prompt{grid-column:1/-1}.template-list-add-new-template__template-list__contents>.components-button{align-items:flex-start;height:100%;text-align:start}")),document.head.appendChild(e)}var{usePostActions:X2,templateTitleField:Q2}=xt(U_.privateApis),{Tabs:Xd}=xt(zn.privateApis);function J2(e){return e.id.toString()}function eS(){let e=Z2(),{activeView:t="active"}=Y2({from:"/templates/list/$activeView"}),r=$2(),o=K2({from:"/templates/list/$activeView"}),n=(0,Jd.useSelect)(v=>v(Qd.store).getPostType("wp_template"),[]),[i,a]=(0,qt.useState)(null),s=Hd,l=(0,qt.useMemo)(()=>Xb(t),[t]),c=(0,qt.useCallback)(v=>{r({search:{...o,...v}})},[o,r]),{view:f,isModified:d,updateView:m,resetToDefault:p}=Gn({kind:"postType",name:"wp_template",slug:"default-new",defaultView:s,activeViewOverrides:l,queryParams:o,onChangeQueryParams:c}),g=()=>{p(),e()},b=v=>{m(v),v.type!==f.type&&e()},{records:x,isLoading:y,staticRecords:w}=m_(t),C=(0,Jd.useSelect)(v=>{let{getUser:k}=v(Qd.store);return x.reduce((F,P)=>(P.author_text?F[P.author_text]||(F[P.author_text]=P.author_text):P.author&&(F[P.author]||(F[P.author]=k(P.author))),F),{})},[x]),I=(0,qt.useMemo)(()=>{let v=[];for(let k in C)v.push({value:C[k]?.id??k,label:C[k]?.name??k});return[Tl,Q2,Al,s_,u_,{...Ol,elements:v}]},[C]),{data:A,paginationInfo:V}=(0,qt.useMemo)(()=>Yi(x,f,I),[x,f,I]),N=(0,qt.useCallback)(v=>{let k=v.map(W=>W.id.toString()),F=o.postIds||[],P=F.filter(W=>!k.includes(W));P.length!==F.length?r({search:{...o,postIds:P.length>0?P:void 0}}):e()},[e,o,r]),E=(0,qt.useCallback)((v,k)=>{(v==="move-to-trash"||v==="permanently-delete")&&N(k),v==="duplicate-post"&&r({to:"/templates/list/user"})},[N,r]),S=p_(),D=X2({postType:"wp_template",context:"list",onActionPerformed:E}),M=(0,qt.useMemo)(()=>[S,...D?.flatMap(v=>v.id==="view-post-revisions"?[]:[v])],[S,D]),T=(0,qt.useMemo)(()=>{let v=[{slug:"active",label:(0,Hn.__)("Active"),icon:Yu},{slug:"user",label:(0,Hn.__)("Created templates"),icon:Qn}],k=new Map;w.forEach(P=>{P.author_text&&!k.has(P.author_text)&&k.set(P.author_text,{slug:P.author_text,label:P.author_text})});let F=Array.from(k.values());return[...v,...F]},[w]),h=(0,qt.useCallback)(v=>{r({to:`/templates/list/${v}`})},[r]);if(!n)return null;let _=o.postIds??[];f.type==="list"&&_.length===0&&A?.length>0&&_.push(A[0].id.toString()),f.type==="list"&&_.splice(1);let O=M.find(v=>v.id==="duplicate-post");if(O&&!("RenderModal"in O))throw new Error("Expected duplicate action to have a RenderModal component");return React.createElement(Ki,{title:(0,Hn.__)("Templates"),className:"template-page",actions:React.createElement(React.Fragment,null,d&&React.createElement(zn.Button,{variant:"tertiary",size:"compact",onClick:g},(0,Hn.__)("Reset view")),React.createElement(kl,null)),hasPadding:!1},T.length>1&&React.createElement("div",{className:"routes-template-list__tabs-wrapper"},React.createElement(Xd,{onSelect:h,selectedTabId:t??"active"},React.createElement(Xd.TabList,null,T.map(v=>React.createElement(Xd.Tab,{tabId:v.slug,key:v.slug},v.label))))),React.createElement(Ui,{data:A,fields:I,view:f,onChangeView:b,actions:M,isLoading:y,paginationInfo:V,defaultLayouts:Cl,getItemId:J2,selection:_,onChangeSelection:v=>{r({search:{...o,postIds:v.length>0?v:void 0,edit:v.length===0?void 0:o.edit}})},isItemClickable:()=>!0,onClickItem:v=>{typeof v.id=="string"?a(v):r({to:`/types/wp_template/edit/${encodeURIComponent(v.id)}`})}}),i&&O&&React.createElement(zn.Modal,{title:(0,Hn.__)("Duplicate"),onRequestClose:()=>a(null),size:"small"},React.createElement(O.RenderModal,{items:[i],closeModal:()=>a(null)})))}var Y_=eS;import{useParams as rS,useNavigate as oS,useSearch as nS,useInvalidate as iS}from"@wordpress/route";var tm=u(er()),Dl=u(q()),rm=u(wt()),ar=u(H()),X_=u(jd()),Nl=u(G());var $_=u(H()),K_=u(er());var{useEntityRecordsWithPermissions:tS}=xt(K_.privateApis);function Z_(e="all"){let{records:t,isResolving:r}=tS("postType","wp_template",{per_page:-1});return{records:(0,$_.useMemo)(()=>t?e==="all"?t:t.filter(n=>n.author_text===e):[],[t,e]),isLoading:r,allRecords:t||[]}}var{usePostActions:aS,templateTitleField:sS}=xt(X_.privateApis),{Tabs:em}=xt(Dl.privateApis);function lS(e){return e.id.toString()}function uS(){let e=iS(),{activeView:t="all"}=rS({from:"/templates/list/$activeView"}),r=oS(),o=nS({from:"/templates/list/$activeView"}),n=(0,rm.useSelect)(T=>T(tm.store).getPostType("wp_template"),[]),i=Zb,a=(0,ar.useMemo)(()=>Qb(t),[t]),s=(0,ar.useCallback)(T=>{r({search:{...o,...T}})},[o,r]),{view:l,isModified:c,updateView:f,resetToDefault:d}=Gn({kind:"postType",name:"wp_template",slug:"default-new",defaultView:i,activeViewOverrides:a,queryParams:o,onChangeQueryParams:s}),m=()=>{d(),e()},p=T=>{f(T),T.type!==l.type&&e()},{records:g,isLoading:b,allRecords:x}=Z_(t),y=(0,rm.useSelect)(T=>{let{getUser:h}=T(tm.store);return g.reduce((_,O)=>(O.author_text?_[O.author_text]||(_[O.author_text]=O.author_text):O.author&&(_[O.author]||(_[O.author]=h(O.author))),_),{})},[g]),w=(0,ar.useMemo)(()=>{let T=[];for(let h in y)T.push({value:y[h]?.id??h,label:y[h]?.name??h});return[Tl,sS,Al,{...Ol,elements:T}]},[y]),{data:C,paginationInfo:I}=(0,ar.useMemo)(()=>Yi(g,l,w),[g,l,w]),A=(0,ar.useCallback)(T=>{let h=T.map(v=>v.id.toString()),_=o.postIds||[],O=_.filter(v=>!h.includes(v));O.length!==_.length?r({search:{...o,postIds:O.length>0?O:void 0}}):e()},[e,o,r]),V=(0,ar.useCallback)((T,h)=>{(T==="move-to-trash"||T==="permanently-delete")&&A(h),T==="duplicate-post"&&r({to:"/templates/list/all"})},[A,r]),N=aS({postType:"wp_template",context:"list",onActionPerformed:V}),E=(0,ar.useMemo)(()=>N?.flatMap(T=>T.id==="view-post-revisions"?[]:[T]),[N]),S=(0,ar.useMemo)(()=>{let T=[{slug:"all",label:(0,Nl.__)("All templates"),icon:ei}],h=new Map;x.forEach(O=>{O.author_text&&!h.has(O.author_text)&&h.set(O.author_text,{slug:O.author_text,label:O.author_text})});let _=Array.from(h.values());return[...T,..._]},[x]),D=(0,ar.useCallback)(T=>{r({to:`/templates/list/${T}`})},[r]);if(!n)return null;let M=o.postIds??[];return l.type==="list"&&M.length===0&&C?.length>0&&M.push(C[0].id.toString()),l.type==="list"&&M.splice(1),React.createElement(Ki,{title:(0,Nl.__)("Templates"),className:"template-page",actions:React.createElement(React.Fragment,null,c&&React.createElement(Dl.Button,{variant:"tertiary",size:"compact",onClick:m},(0,Nl.__)("Reset view")),React.createElement(kl,null)),hasPadding:!1},S.length>1&&React.createElement("div",{className:"routes-template-list__tabs-wrapper"},React.createElement(em,{onSelect:D,selectedTabId:t??"all"},React.createElement(em.TabList,null,S.map(T=>React.createElement(em.Tab,{tabId:T.slug,key:T.slug},T.label))))),React.createElement(Ui,{data:C,fields:w,view:l,onChangeView:p,actions:E,isLoading:b,paginationInfo:I,defaultLayouts:Cl,getItemId:lS,selection:M,onChangeSelection:T=>{r({search:{...o,postIds:T.length>0?T:void 0,edit:T.length===0?void 0:o.edit}})},isItemClickable:()=>!0,onClickItem:T=>{r({to:`/types/wp_template/edit/${encodeURIComponent(T.id)}`})}}))}var Q_=uS;function cS(){return typeof window<"u"&&window.__experimentalTemplateActivate?React.createElement(Y_,null):React.createElement(Q_,null)}var dS=cS;export{dS 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. + *) +*/ diff --git a/src/wp-includes/build/routes/template-list/route.js b/src/wp-includes/build/routes/template-list/route.js new file mode 100644 index 0000000000000..f9082bad15eca --- /dev/null +++ b/src/wp-includes/build/routes/template-list/route.js @@ -0,0 +1,245 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// routes/template-list/route.ts +var import_data3 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_i18n = __toESM(require_i18n()); + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f) => f.field) + ); + const preserved = (view.filters ?? []).filter( + (f) => !activeFields.has(f.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); +async function loadView(config) { + const { kind, name, slug, defaultView, activeViewOverrides, queryParams } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data2.select)(import_preferences2.store).get( + "core/views", + preferenceKey + ); + const baseView = persistedView ?? defaultView; + const page = queryParams?.page ?? 1; + const search = queryParams?.search ?? ""; + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); +} + +// routes/template-list/view-utils.ts +var DEFAULT_VIEW = { + type: "grid", + perPage: 20, + sort: { + field: "title", + direction: "asc" + }, + fields: ["author", "active", "slug"], + titleField: "title", + descriptionField: "description", + mediaField: "preview", + filters: [] +}; +var DEFAULT_VIEW_LEGACY = { + ...DEFAULT_VIEW, + fields: ["author"] +}; +function getActiveViewOverridesForTab(activeView) { + if (activeView === "user") { + return { + sort: { field: "date", direction: "desc" } + }; + } + if (activeView === "active") { + return {}; + } + return { + filters: [ + { + field: "author", + operator: "isAny", + value: [activeView] + } + ] + }; +} +async function ensureView(activeView, search) { + return loadView({ + kind: "postType", + name: "wp_template", + slug: "default-new", + defaultView: DEFAULT_VIEW, + activeViewOverrides: getActiveViewOverridesForTab( + activeView ?? "active" + ), + queryParams: search + }); +} +function viewToQuery(view) { + const result = {}; + if (void 0 !== view.perPage) { + result.per_page = view.perPage; + } + if (void 0 !== view.page) { + result.page = view.page; + } + if (![void 0, ""].includes(view.search)) { + result.search = view.search; + } + if (void 0 !== view.sort?.field) { + result.orderby = view.sort.field; + } + if (void 0 !== view.sort?.direction) { + result.order = view.sort.direction; + } + return result; +} + +// routes/template-list/route.ts +var route = { + title: () => (0, import_i18n.__)("Templates"), + async canvas(context) { + const { params, search } = context; + const view = await ensureView(params.activeView, { + page: search.page, + search: search.search + }); + if (view.type !== "list") { + return void 0; + } + if (search.postIds && search.postIds.length > 0) { + const postId = search.postIds[0].toString(); + return { + postType: "wp_template", + postId, + isPreview: true, + editLink: `/types/wp_template/edit/${encodeURIComponent( + postId + )}` + }; + } + const query = viewToQuery(view); + const posts = await (0, import_data3.resolveSelect)(import_core_data.store).getEntityRecords( + "postType", + "wp_template", + { ...query, per_page: 1 } + ); + if (posts && posts.length > 0) { + const postId = posts[0].id.toString(); + return { + postType: "wp_template", + postId, + isPreview: true, + editLink: `/types/wp_template/edit/${encodeURIComponent( + postId + )}` + }; + } + return void 0; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/template-list/route.min.asset.php b/src/wp-includes/build/routes/template-list/route.min.asset.php new file mode 100644 index 0000000000000..70aecd028a3d5 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-preferences'), 'version' => '1fa4b23d6072a6bb518d'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template-list/route.min.js b/src/wp-includes/build/routes/template-list/route.min.js new file mode 100644 index 0000000000000..76838aa2c7a70 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/route.min.js @@ -0,0 +1 @@ +var j=Object.create;var m=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var z=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of K(t))!$.call(e,s)&&s!==r&&m(e,s,{get:()=>t[s],enumerable:!(i=C(t,s))||i.enumerable});return e};var o=(e,t,r)=>(r=e!=null?j(R(e)):{},z(t||!e||!e.__esModule?m(r,"default",{value:e,enumerable:!0}):r,e));var f=p((G,g)=>{g.exports=window.wp.data});var y=p((N,w)=>{w.exports=window.wp.coreData});var V=p((H,h)=>{h.exports=window.wp.i18n});var x=p((X,A)=>{A.exports=window.wp.element});var c=p((Z,T)=>{T.exports=window.wp.preferences});var D=o(f()),k=o(y()),E=o(V());var P=o(x(),1),S=o(f(),1),B=o(c(),1);function l(e,t,r){return`dataviews-${e}-${t}-${r}`}function u(e,t,r){if(!t)return e;let i=e;if(t.filters&&t.filters.length>0){let s=new Set(t.filters.map(n=>n.field)),a=(e.filters??[]).filter(n=>!s.has(n.field));i={...i,filters:[...a,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(i={...i,sort:t.sort}),i}var _=o(f(),1),v=o(c(),1);async function d(e){let{kind:t,name:r,slug:i,defaultView:s,activeViewOverrides:a,queryParams:n}=e,U=l(t,r,i),q=(0,_.select)(v.store).get("core/views",U)??s,M=n?.page??1,O=n?.search??"";return u({...q,page:M,search:O},a,s)}var L={type:"grid",perPage:20,sort:{field:"title",direction:"asc"},fields:["author","active","slug"],titleField:"title",descriptionField:"description",mediaField:"preview",filters:[]},ge={...L,fields:["author"]};function Q(e){return e==="user"?{sort:{field:"date",direction:"desc"}}:e==="active"?{}:{filters:[{field:"author",operator:"isAny",value:[e]}]}}async function F(e,t){return d({kind:"postType",name:"wp_template",slug:"default-new",defaultView:L,activeViewOverrides:Q(e??"active"),queryParams:t})}function I(e){let t={};return e.perPage!==void 0&&(t.per_page=e.perPage),e.page!==void 0&&(t.page=e.page),[void 0,""].includes(e.search)||(t.search=e.search),e.sort?.field!==void 0&&(t.orderby=e.sort.field),e.sort?.direction!==void 0&&(t.order=e.sort.direction),t}var he={title:()=>(0,E.__)("Templates"),async canvas(e){let{params:t,search:r}=e,i=await F(t.activeView,{page:r.page,search:r.search});if(i.type!=="list")return;if(r.postIds&&r.postIds.length>0){let n=r.postIds[0].toString();return{postType:"wp_template",postId:n,isPreview:!0,editLink:`/types/wp_template/edit/${encodeURIComponent(n)}`}}let s=I(i),a=await(0,D.resolveSelect)(k.store).getEntityRecords("postType","wp_template",{...s,per_page:1});if(a&&a.length>0){let n=a[0].id.toString();return{postType:"wp_template",postId:n,isPreview:!0,editLink:`/types/wp_template/edit/${encodeURIComponent(n)}`}}}};export{he as route}; diff --git a/src/wp-includes/build/routes/template-part-list/content.js b/src/wp-includes/build/routes/template-part-list/content.js new file mode 100644 index 0000000000000..4bdc3d3c6d8dd --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/content.js @@ -0,0 +1,17540 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + +// vendor-external:react +var require_react = __commonJS({ + "vendor-external:react"(exports, module) { + module.exports = window.React; + } +}); + +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + +// 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(subscribe2, getSnapshot) { + didWarnOld18Alpha || void 0 === React9.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 = useState24({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect2( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe2, value, getSnapshot] + ); + useEffect17( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe2(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe2] + ); + useDebugValue(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(subscribe2, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React9 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState24 = React9.useState, useEffect17 = React9.useEffect, useLayoutEffect2 = React9.useLayoutEffect, useDebugValue = React9.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 !== React9.useSyncExternalStore ? React9.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(); + } + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// 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) { + module.exports = window.wp.privateApis; + } +}); + +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; + } +}); + +// package-external:@wordpress/keycodes +var require_keycodes = __commonJS({ + "package-external:@wordpress/keycodes"(exports, module) { + module.exports = window.wp.keycodes; + } +}); + +// node_modules/remove-accents/index.js +var require_remove_accents = __commonJS({ + "node_modules/remove-accents/index.js"(exports, module) { + var characterMap = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\u1EA4": "A", + "\u1EAE": "A", + "\u1EB2": "A", + "\u1EB4": "A", + "\u1EB6": "A", + "\xC6": "AE", + "\u1EA6": "A", + "\u1EB0": "A", + "\u0202": "A", + "\u1EA2": "A", + "\u1EA0": "A", + "\u1EA8": "A", + "\u1EAA": "A", + "\u1EAC": "A", + "\xC7": "C", + "\u1E08": "C", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\u1EBE": "E", + "\u1E16": "E", + "\u1EC0": "E", + "\u1E14": "E", + "\u1E1C": "E", + "\u0206": "E", + "\u1EBA": "E", + "\u1EBC": "E", + "\u1EB8": "E", + "\u1EC2": "E", + "\u1EC4": "E", + "\u1EC6": "E", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\u1E2E": "I", + "\u020A": "I", + "\u1EC8": "I", + "\u1ECA": "I", + "\xD0": "D", + "\xD1": "N", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\u1ED0": "O", + "\u1E4C": "O", + "\u1E52": "O", + "\u020E": "O", + "\u1ECE": "O", + "\u1ECC": "O", + "\u1ED4": "O", + "\u1ED6": "O", + "\u1ED8": "O", + "\u1EDC": "O", + "\u1EDE": "O", + "\u1EE0": "O", + "\u1EDA": "O", + "\u1EE2": "O", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\u1EE6": "U", + "\u1EE4": "U", + "\u1EEC": "U", + "\u1EEE": "U", + "\u1EF0": "U", + "\xDD": "Y", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\u1EA5": "a", + "\u1EAF": "a", + "\u1EB3": "a", + "\u1EB5": "a", + "\u1EB7": "a", + "\xE6": "ae", + "\u1EA7": "a", + "\u1EB1": "a", + "\u0203": "a", + "\u1EA3": "a", + "\u1EA1": "a", + "\u1EA9": "a", + "\u1EAB": "a", + "\u1EAD": "a", + "\xE7": "c", + "\u1E09": "c", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\u1EBF": "e", + "\u1E17": "e", + "\u1EC1": "e", + "\u1E15": "e", + "\u1E1D": "e", + "\u0207": "e", + "\u1EBB": "e", + "\u1EBD": "e", + "\u1EB9": "e", + "\u1EC3": "e", + "\u1EC5": "e", + "\u1EC7": "e", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\u1E2F": "i", + "\u020B": "i", + "\u1EC9": "i", + "\u1ECB": "i", + "\xF0": "d", + "\xF1": "n", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\u1ED1": "o", + "\u1E4D": "o", + "\u1E53": "o", + "\u020F": "o", + "\u1ECF": "o", + "\u1ECD": "o", + "\u1ED5": "o", + "\u1ED7": "o", + "\u1ED9": "o", + "\u1EDD": "o", + "\u1EDF": "o", + "\u1EE1": "o", + "\u1EDB": "o", + "\u1EE3": "o", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\u1EE7": "u", + "\u1EE5": "u", + "\u1EED": "u", + "\u1EEF": "u", + "\u1EF1": "u", + "\xFD": "y", + "\xFF": "y", + "\u0100": "A", + "\u0101": "a", + "\u0102": "A", + "\u0103": "a", + "\u0104": "A", + "\u0105": "a", + "\u0106": "C", + "\u0107": "c", + "\u0108": "C", + "\u0109": "c", + "\u010A": "C", + "\u010B": "c", + "\u010C": "C", + "\u010D": "c", + "C\u0306": "C", + "c\u0306": "c", + "\u010E": "D", + "\u010F": "d", + "\u0110": "D", + "\u0111": "d", + "\u0112": "E", + "\u0113": "e", + "\u0114": "E", + "\u0115": "e", + "\u0116": "E", + "\u0117": "e", + "\u0118": "E", + "\u0119": "e", + "\u011A": "E", + "\u011B": "e", + "\u011C": "G", + "\u01F4": "G", + "\u011D": "g", + "\u01F5": "g", + "\u011E": "G", + "\u011F": "g", + "\u0120": "G", + "\u0121": "g", + "\u0122": "G", + "\u0123": "g", + "\u0124": "H", + "\u0125": "h", + "\u0126": "H", + "\u0127": "h", + "\u1E2A": "H", + "\u1E2B": "h", + "\u0128": "I", + "\u0129": "i", + "\u012A": "I", + "\u012B": "i", + "\u012C": "I", + "\u012D": "i", + "\u012E": "I", + "\u012F": "i", + "\u0130": "I", + "\u0131": "i", + "\u0132": "IJ", + "\u0133": "ij", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u1E30": "K", + "\u1E31": "k", + "K\u0306": "K", + "k\u0306": "k", + "\u0139": "L", + "\u013A": "l", + "\u013B": "L", + "\u013C": "l", + "\u013D": "L", + "\u013E": "l", + "\u013F": "L", + "\u0140": "l", + "\u0141": "l", + "\u0142": "l", + "\u1E3E": "M", + "\u1E3F": "m", + "M\u0306": "M", + "m\u0306": "m", + "\u0143": "N", + "\u0144": "n", + "\u0145": "N", + "\u0146": "n", + "\u0147": "N", + "\u0148": "n", + "\u0149": "n", + "N\u0306": "N", + "n\u0306": "n", + "\u014C": "O", + "\u014D": "o", + "\u014E": "O", + "\u014F": "o", + "\u0150": "O", + "\u0151": "o", + "\u0152": "OE", + "\u0153": "oe", + "P\u0306": "P", + "p\u0306": "p", + "\u0154": "R", + "\u0155": "r", + "\u0156": "R", + "\u0157": "r", + "\u0158": "R", + "\u0159": "r", + "R\u0306": "R", + "r\u0306": "r", + "\u0212": "R", + "\u0213": "r", + "\u015A": "S", + "\u015B": "s", + "\u015C": "S", + "\u015D": "s", + "\u015E": "S", + "\u0218": "S", + "\u0219": "s", + "\u015F": "s", + "\u0160": "S", + "\u0161": "s", + "\u0162": "T", + "\u0163": "t", + "\u021B": "t", + "\u021A": "T", + "\u0164": "T", + "\u0165": "t", + "\u0166": "T", + "\u0167": "t", + "T\u0306": "T", + "t\u0306": "t", + "\u0168": "U", + "\u0169": "u", + "\u016A": "U", + "\u016B": "u", + "\u016C": "U", + "\u016D": "u", + "\u016E": "U", + "\u016F": "u", + "\u0170": "U", + "\u0171": "u", + "\u0172": "U", + "\u0173": "u", + "\u0216": "U", + "\u0217": "u", + "V\u0306": "V", + "v\u0306": "v", + "\u0174": "W", + "\u0175": "w", + "\u1E82": "W", + "\u1E83": "w", + "X\u0306": "X", + "x\u0306": "x", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "Y\u0306": "Y", + "y\u0306": "y", + "\u0179": "Z", + "\u017A": "z", + "\u017B": "Z", + "\u017C": "z", + "\u017D": "Z", + "\u017E": "z", + "\u017F": "s", + "\u0192": "f", + "\u01A0": "O", + "\u01A1": "o", + "\u01AF": "U", + "\u01B0": "u", + "\u01CD": "A", + "\u01CE": "a", + "\u01CF": "I", + "\u01D0": "i", + "\u01D1": "O", + "\u01D2": "o", + "\u01D3": "U", + "\u01D4": "u", + "\u01D5": "U", + "\u01D6": "u", + "\u01D7": "U", + "\u01D8": "u", + "\u01D9": "U", + "\u01DA": "u", + "\u01DB": "U", + "\u01DC": "u", + "\u1EE8": "U", + "\u1EE9": "u", + "\u1E78": "U", + "\u1E79": "u", + "\u01FA": "A", + "\u01FB": "a", + "\u01FC": "AE", + "\u01FD": "ae", + "\u01FE": "O", + "\u01FF": "o", + "\xDE": "TH", + "\xFE": "th", + "\u1E54": "P", + "\u1E55": "p", + "\u1E64": "S", + "\u1E65": "s", + "X\u0301": "X", + "x\u0301": "x", + "\u0403": "\u0413", + "\u0453": "\u0433", + "\u040C": "\u041A", + "\u045C": "\u043A", + "A\u030B": "A", + "a\u030B": "a", + "E\u030B": "E", + "e\u030B": "e", + "I\u030B": "I", + "i\u030B": "i", + "\u01F8": "N", + "\u01F9": "n", + "\u1ED2": "O", + "\u1ED3": "o", + "\u1E50": "O", + "\u1E51": "o", + "\u1EEA": "U", + "\u1EEB": "u", + "\u1E80": "W", + "\u1E81": "w", + "\u1EF2": "Y", + "\u1EF3": "y", + "\u0200": "A", + "\u0201": "a", + "\u0204": "E", + "\u0205": "e", + "\u0208": "I", + "\u0209": "i", + "\u020C": "O", + "\u020D": "o", + "\u0210": "R", + "\u0211": "r", + "\u0214": "U", + "\u0215": "u", + "B\u030C": "B", + "b\u030C": "b", + "\u010C\u0323": "C", + "\u010D\u0323": "c", + "\xCA\u030C": "E", + "\xEA\u030C": "e", + "F\u030C": "F", + "f\u030C": "f", + "\u01E6": "G", + "\u01E7": "g", + "\u021E": "H", + "\u021F": "h", + "J\u030C": "J", + "\u01F0": "j", + "\u01E8": "K", + "\u01E9": "k", + "M\u030C": "M", + "m\u030C": "m", + "P\u030C": "P", + "p\u030C": "p", + "Q\u030C": "Q", + "q\u030C": "q", + "\u0158\u0329": "R", + "\u0159\u0329": "r", + "\u1E66": "S", + "\u1E67": "s", + "V\u030C": "V", + "v\u030C": "v", + "W\u030C": "W", + "w\u030C": "w", + "X\u030C": "X", + "x\u030C": "x", + "Y\u030C": "Y", + "y\u030C": "y", + "A\u0327": "A", + "a\u0327": "a", + "B\u0327": "B", + "b\u0327": "b", + "\u1E10": "D", + "\u1E11": "d", + "\u0228": "E", + "\u0229": "e", + "\u0190\u0327": "E", + "\u025B\u0327": "e", + "\u1E28": "H", + "\u1E29": "h", + "I\u0327": "I", + "i\u0327": "i", + "\u0197\u0327": "I", + "\u0268\u0327": "i", + "M\u0327": "M", + "m\u0327": "m", + "O\u0327": "O", + "o\u0327": "o", + "Q\u0327": "Q", + "q\u0327": "q", + "U\u0327": "U", + "u\u0327": "u", + "X\u0327": "X", + "x\u0327": "x", + "Z\u0327": "Z", + "z\u0327": "z", + "\u0439": "\u0438", + "\u0419": "\u0418", + "\u0451": "\u0435", + "\u0401": "\u0415" + }; + var chars = Object.keys(characterMap).join("|"); + var allAccents = new RegExp(chars, "g"); + var firstAccent = new RegExp(chars, ""); + function matcher(match2) { + return characterMap[match2]; + } + var removeAccents2 = function(string) { + return string.replace(allAccents, matcher); + }; + var hasAccents = function(string) { + return !!string.match(firstAccent); + }; + module.exports = removeAccents2; + module.exports.has = hasAccents; + module.exports.remove = removeAccents2; + } +}); + +// node_modules/fast-deep-equal/es6/index.js +var require_es6 = __commonJS({ + "node_modules/fast-deep-equal/es6/index.js"(exports, module) { + "use strict"; + module.exports = function equal(a2, b2) { + if (a2 === b2) return true; + if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { + if (a2.constructor !== b2.constructor) return false; + var length, i2, keys; + if (Array.isArray(a2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (!equal(a2[i2], b2[i2])) return false; + return true; + } + if (a2 instanceof Map && b2 instanceof Map) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + for (i2 of a2.entries()) + if (!equal(i2[1], b2.get(i2[0]))) return false; + return true; + } + if (a2 instanceof Set && b2 instanceof Set) { + if (a2.size !== b2.size) return false; + for (i2 of a2.entries()) + if (!b2.has(i2[0])) return false; + return true; + } + if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { + length = a2.length; + if (length != b2.length) return false; + for (i2 = length; i2-- !== 0; ) + if (a2[i2] !== b2[i2]) return false; + return true; + } + if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; + if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); + if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) return false; + for (i2 = length; i2-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; + for (i2 = length; i2-- !== 0; ) { + var key = keys[i2]; + if (!equal(a2[key], b2[key])) return false; + } + return true; + } + return a2 !== a2 && b2 !== b2; + }; + } +}); + +// package-external:@wordpress/date +var require_date = __commonJS({ + "package-external:@wordpress/date"(exports, module) { + module.exports = window.wp.date; + } +}); + +// package-external:@wordpress/warning +var require_warning = __commonJS({ + "package-external:@wordpress/warning"(exports, module) { + module.exports = window.wp.warning; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/editor +var require_editor = __commonJS({ + "package-external:@wordpress/editor"(exports, module) { + module.exports = window.wp.editor; + } +}); + +// package-external:@wordpress/notices +var require_notices = __commonJS({ + "package-external:@wordpress/notices"(exports, module) { + module.exports = window.wp.notices; + } +}); + +// package-external:@wordpress/blocks +var require_blocks = __commonJS({ + "package-external:@wordpress/blocks"(exports, module) { + module.exports = window.wp.blocks; + } +}); + +// routes/template-part-list/stage.tsx +import { + useParams, + useNavigate, + useSearch, + Link, + useInvalidate +} from "@wordpress/route"; + +// node_modules/dequal/dist/index.mjs +var has = Object.prototype.hasOwnProperty; +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + if (foo && bar && (ctor = foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + if (ctor === Array) { + if ((len = foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])) ; + } + return len === -1; + } + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === "object") { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; + } + return len === -1; + } + if (ArrayBuffer.isView(foo)) { + if ((len = foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]) ; + } + return len === -1; + } + if (!ctor || typeof foo === "object") { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + return foo !== foo && bar !== bar; +} + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + const preserved = (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f2) => f2.field) + ); + result = { + ...result, + filters: (view.filters ?? []).filter( + (f2) => !activeFields.has(f2.field) + ) + }; + } + if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { + result = { + ...result, + sort: defaultView?.sort + }; + } + return result; +} + +// packages/views/build-module/use-view.mjs +function omit(obj, keys) { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +} +function useView(config) { + const { + kind, + name, + slug, + defaultView, + activeViewOverrides, + queryParams, + onChangeQueryParams + } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data.useSelect)( + (select2) => { + return select2(import_preferences.store).get( + "core/views", + preferenceKey + ); + }, + [preferenceKey] + ); + const { set } = (0, import_data.useDispatch)(import_preferences.store); + const baseView = persistedView ?? defaultView; + const page = Number(queryParams?.page ?? baseView.page ?? 1); + const search = queryParams?.search ?? baseView.search ?? ""; + const view = (0, import_element.useMemo)(() => { + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); + }, [baseView, page, search, activeViewOverrides, defaultView]); + const isModified = !!persistedView; + const updateView = (0, import_element.useCallback)( + (newView) => { + const urlParams = { + page: newView?.page, + search: newView?.search + }; + const preferenceView = stripActiveViewOverrides( + omit(newView, ["page", "search"]), + activeViewOverrides, + defaultView + ); + if (onChangeQueryParams && !dequal(urlParams, { page, search })) { + onChangeQueryParams(urlParams); + } + const comparableBaseView = stripActiveViewOverrides( + baseView, + activeViewOverrides, + defaultView + ); + const comparableDefaultView = stripActiveViewOverrides( + defaultView, + activeViewOverrides, + defaultView + ); + if (!dequal(comparableBaseView, preferenceView)) { + if (dequal(preferenceView, comparableDefaultView)) { + set("core/views", preferenceKey, void 0); + } else { + set("core/views", preferenceKey, preferenceView); + } + } + }, + [ + onChangeQueryParams, + page, + search, + baseView, + defaultView, + activeViewOverrides, + set, + preferenceKey + ] + ); + const resetToDefault = (0, import_element.useCallback)(() => { + set("core/views", preferenceKey, void 0); + }, [preferenceKey, set]); + return { + view, + isModified, + updateView, + resetToDefault + }; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); + +// packages/dataviews/build-module/dataviews/index.mjs +var import_element54 = __toESM(require_element(), 1); +var import_compose12 = __toESM(require_compose(), 1); + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React2 = __toESM(require_react(), 1); +var UNINITIALIZED = {}; +function useRefWithInit(init2, initArg) { + const ref = React2.useRef(UNINITIALIZED); + if (ref.current === UNINITIALIZED) { + ref.current = init2(initArg); + } + return ref; +} + +// node_modules/@base-ui/react/esm/utils/useRenderElement.js +var React5 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useMergedRefs.js +function useMergedRefs(a2, b2, c2, d2) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChange(forkRef, a2, b2, c2, d2)) { + update(forkRef, [a2, b2, c2, d2]); + } + return forkRef.callback; +} +function useMergedRefsN(refs) { + const forkRef = useRefWithInit(createForkRef).current; + if (didChangeN(forkRef, refs)) { + update(forkRef, refs); + } + return forkRef.callback; +} +function createForkRef() { + return { + callback: null, + cleanup: null, + refs: [] + }; +} +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]); +} +function update(forkRef, refs) { + forkRef.refs = refs; + if (refs.every((ref) => ref == null)) { + forkRef.callback = null; + return; + } + forkRef.callback = (instance) => { + if (forkRef.cleanup) { + forkRef.cleanup(); + forkRef.cleanup = null; + } + if (instance != null) { + const cleanupCallbacks = Array(refs.length).fill(null); + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const refCleanup = ref(instance); + if (typeof refCleanup === "function") { + cleanupCallbacks[i2] = refCleanup; + } + break; + } + case "object": { + ref.current = instance; + break; + } + default: + } + } + forkRef.cleanup = () => { + for (let i2 = 0; i2 < refs.length; i2 += 1) { + const ref = refs[i2]; + if (ref == null) { + continue; + } + switch (typeof ref) { + case "function": { + const cleanupCallback = cleanupCallbacks[i2]; + if (typeof cleanupCallback === "function") { + cleanupCallback(); + } else { + ref(null); + } + break; + } + case "object": { + ref.current = null; + break; + } + default: + } + } + }; + } + }; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +var React4 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/reactVersion.js +var React3 = __toESM(require_react(), 1); +var majorVersion = parseInt(React3.version, 10); +function isReactVersionAtLeast(reactVersionToCheck) { + return majorVersion >= reactVersionToCheck; +} + +// node_modules/@base-ui/utils/esm/getReactElementRef.js +function getReactElementRef(element) { + if (!/* @__PURE__ */ React4.isValidElement(element)) { + return null; + } + const reactElement = element; + const propsWithRef = reactElement.props; + return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; +} + +// node_modules/@base-ui/utils/esm/mergeObjects.js +function mergeObjects(a2, b2) { + if (a2 && !b2) { + return a2; + } + if (!a2 && b2) { + return b2; + } + if (a2 || b2) { + return { + ...a2, + ...b2 + }; + } + return void 0; +} + +// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +function getStateAttributesProps(state, customMapping) { + const props = {}; + for (const key in state) { + const value = state[key]; + if (customMapping?.hasOwnProperty(key)) { + const customProps = customMapping[key](value); + if (customProps != null) { + Object.assign(props, customProps); + } + continue; + } + if (value === true) { + props[`data-${key.toLowerCase()}`] = ""; + } else if (value) { + props[`data-${key.toLowerCase()}`] = value.toString(); + } + } + return props; +} + +// node_modules/@base-ui/react/esm/utils/resolveClassName.js +function resolveClassName(className, state) { + return typeof className === "function" ? className(state) : className; +} + +// node_modules/@base-ui/react/esm/utils/resolveStyle.js +function resolveStyle(style, state) { + return typeof style === "function" ? style(state) : style; +} + +// 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 (b2) { + merged = mergeOne(merged, b2); + } + if (c2) { + merged = mergeOne(merged, c2); + } + if (d2) { + merged = mergeOne(merged, d2); + } + if (e2) { + merged = mergeOne(merged, e2); + } + return merged; +} +function mergePropsN(props) { + if (props.length === 0) { + return EMPTY_PROPS; + } + if (props.length === 1) { + return resolvePropsGetter(props[0], EMPTY_PROPS); + } + let merged = { + ...resolvePropsGetter(props[0], EMPTY_PROPS) + }; + for (let i2 = 1; i2 < props.length; i2 += 1) { + merged = mergeOne(merged, props[i2]); + } + return merged; +} +function mergeOne(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return inputProps(merged); + } + return mutablyMergeInto(merged, inputProps); +} +function mutablyMergeInto(mergedProps, externalProps) { + if (!externalProps) { + return mergedProps; + } + for (const propName in externalProps) { + const externalPropValue = externalProps[propName]; + switch (propName) { + case "style": { + mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); + break; + } + case "className": { + mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); + break; + } + default: { + if (isEventHandler(propName, externalPropValue)) { + mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); + } else { + mergedProps[propName] = externalPropValue; + } + } + } + } + return mergedProps; +} +function isEventHandler(key, value) { + const code0 = key.charCodeAt(0); + const code1 = key.charCodeAt(1); + const code2 = key.charCodeAt(2); + return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); +} +function isPropsGetter(inputProps) { + return typeof inputProps === "function"; +} +function resolvePropsGetter(inputProps, previousProps) { + if (isPropsGetter(inputProps)) { + return inputProps(previousProps); + } + return inputProps ?? EMPTY_PROPS; +} +function mergeEventHandlers(ourHandler, theirHandler) { + if (!theirHandler) { + return ourHandler; + } + if (!ourHandler) { + return theirHandler; + } + return (event) => { + if (isSyntheticEvent(event)) { + const baseUIEvent = event; + makeEventPreventable(baseUIEvent); + const result2 = theirHandler(baseUIEvent); + if (!baseUIEvent.baseUIHandlerPrevented) { + ourHandler?.(baseUIEvent); + } + return result2; + } + const result = theirHandler(event); + ourHandler?.(event); + return result; + }; +} +function makeEventPreventable(event) { + event.preventBaseUIHandler = () => { + event.baseUIHandlerPrevented = true; + }; + return event; +} +function mergeClassNames(ourClassName, theirClassName) { + if (theirClassName) { + if (ourClassName) { + return theirClassName + " " + ourClassName; + } + return theirClassName; + } + return ourClassName; +} +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/useRenderElement.js +var import_react = __toESM(require_react(), 1); +function useRenderElement(element, componentProps, params = {}) { + const renderProp = componentProps.render; + const outProps = useRenderElementProps(componentProps, params); + if (params.enabled === false) { + return null; + } + const state = params.state ?? EMPTY_OBJECT; + return evaluateRenderProp(element, renderProp, outProps, state); +} +function useRenderElementProps(componentProps, params = {}) { + const { + className: classNameProp, + style: styleProp, + render: renderProp + } = componentProps; + const { + state = EMPTY_OBJECT, + ref, + props, + stateAttributesMapping, + 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 outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + if (typeof document !== "undefined") { + if (!enabled) { + useMergedRefs(null, null); + } else if (Array.isArray(ref)) { + outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); + } else { + outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); + } + } + if (!enabled) { + return EMPTY_OBJECT; + } + if (className !== void 0) { + outProps.className = mergeClassNames(outProps.className, className); + } + if (style !== void 0) { + outProps.style = mergeObjects(outProps.style, style); + } + return outProps; +} +function evaluateRenderProp(element, render4, props, state) { + if (render4) { + if (typeof render4 === "function") { + return render4(props, state); + } + const mergedProps = mergeProps(props, render4.props); + mergedProps.ref = props.ref; + return /* @__PURE__ */ React5.cloneElement(render4, 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(8)); +} +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__ */ React5.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// node_modules/clsx/dist/clsx.mjs +function r(e2) { + var t2, f2, n2 = ""; + if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; + else if ("object" == typeof e2) if (Array.isArray(e2)) { + var o2 = e2.length; + for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2); + } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); + return n2; +} +function clsx() { + for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2); + return n2; +} +var clsx_default = clsx; + +// packages/ui/build-module/stack/stack.mjs +var import_element2 = __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"); + 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 Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && `var(--wpds-dimension-gap-${gap})`, + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render: render4, + ref, + props: mergeProps(props, { style, className: style_default.stack }) + }); + return element; +}); + +// packages/icons/build-module/library/arrow-down.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var arrow_down_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: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); + +// packages/icons/build-module/library/arrow-left.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var arrow_left_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: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); + +// packages/icons/build-module/library/arrow-right.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var arrow_right_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: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); + +// packages/icons/build-module/library/arrow-up.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var arrow_up_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: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); + +// packages/icons/build-module/library/block-table.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); + +// packages/icons/build-module/library/category.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var category_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + import_primitives6.Path, + { + d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", + fillRule: "evenodd", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/check.mjs +var import_primitives7 = __toESM(require_primitives(), 1); +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var check_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives8 = __toESM(require_primitives(), 1); +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.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/cog.mjs +var import_primitives9 = __toESM(require_primitives(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var cog_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + import_primitives9.Path, + { + fillRule: "evenodd", + d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z", + clipRule: "evenodd" + } +) }); + +// packages/icons/build-module/library/envelope.mjs +var import_primitives10 = __toESM(require_primitives(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + import_primitives10.Path, + { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" + } +) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives11 = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( + import_primitives11.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/footer.mjs +var import_primitives12 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var footer_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( + import_primitives12.Path, + { + fillRule: "evenodd", + d: "M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" + } +) }); + +// packages/icons/build-module/library/format-list-bullets-rtl.mjs +var import_primitives13 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); + +// packages/icons/build-module/library/format-list-bullets.mjs +var import_primitives14 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); + +// packages/icons/build-module/library/funnel.mjs +var import_primitives15 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); + +// packages/icons/build-module/library/header.mjs +var import_primitives16 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var header_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); + +// packages/icons/build-module/library/link.mjs +var import_primitives17 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var link_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); + +// packages/icons/build-module/library/mobile.mjs +var import_primitives18 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives19 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.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_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.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/icons/build-module/library/scheduled.mjs +var import_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( + import_primitives22.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 0Zm9 1V8h-1.5v3.5h-2V13H13Z" + } +) }); + +// packages/icons/build-module/library/search.mjs +var import_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var search_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); + +// packages/icons/build-module/library/seen.mjs +var import_primitives24 = __toESM(require_primitives(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var seen_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); + +// packages/icons/build-module/library/sidebar.mjs +var import_primitives25 = __toESM(require_primitives(), 1); +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var sidebar_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.Path, { d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); + +// packages/icons/build-module/library/symbol-filled.mjs +var import_primitives26 = __toESM(require_primitives(), 1); +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var symbol_filled_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); + +// packages/icons/build-module/library/table-column-after.mjs +var import_primitives27 = __toESM(require_primitives(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var table_column_after_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14.2c.1.9.9 1.7 1.8 1.8H19.2c1-.1 1.8-1 1.8-2V5c0-1.1-.9-2-2-2ZM8.5 19.5H5c-.3 0-.5-.2-.5-.5v-3.5h4v4Zm0-5.5h-4v-4h4v4Zm0-5.5h-4V5c0-.3.2-.5.5-.5h3.5v4Zm11 10.5c0 .3-.2.5-.5.5h-9v-15h9c.3 0 .5.2.5.5v14Zm-4-10.8H14v3h-3v1.5h3v3h1.5v-3h3v-1.5h-3v-3Z" }) }); + +// packages/icons/build-module/library/unseen.mjs +var import_primitives28 = __toESM(require_primitives(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var import_element3 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/constants.mjs +var import_i18n = __toESM(require_i18n(), 1); +var OPERATOR_IS_ANY = "isAny"; +var OPERATOR_IS_NONE = "isNone"; +var OPERATOR_IS_ALL = "isAll"; +var OPERATOR_IS_NOT_ALL = "isNotAll"; +var OPERATOR_BETWEEN = "between"; +var OPERATOR_IN_THE_PAST = "inThePast"; +var OPERATOR_OVER = "over"; +var OPERATOR_IS = "is"; +var OPERATOR_IS_NOT = "isNot"; +var OPERATOR_LESS_THAN = "lessThan"; +var OPERATOR_GREATER_THAN = "greaterThan"; +var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; +var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; +var OPERATOR_BEFORE = "before"; +var OPERATOR_AFTER = "after"; +var OPERATOR_BEFORE_INC = "beforeInc"; +var OPERATOR_AFTER_INC = "afterInc"; +var OPERATOR_CONTAINS = "contains"; +var OPERATOR_NOT_CONTAINS = "notContains"; +var OPERATOR_STARTS_WITH = "startsWith"; +var OPERATOR_ON = "on"; +var OPERATOR_NOT_ON = "notOn"; +var SORTING_DIRECTIONS = ["asc", "desc"]; +var sortArrows = { asc: "\u2191", desc: "\u2193" }; +var sortValues = { asc: "ascending", desc: "descending" }; +var sortLabels = { + asc: (0, import_i18n.__)("Sort ascending"), + desc: (0, import_i18n.__)("Sort descending") +}; +var sortIcons = { + asc: arrow_up_default, + desc: arrow_down_default +}; +var LAYOUT_TABLE = "table"; +var LAYOUT_GRID = "grid"; +var LAYOUT_LIST = "list"; +var LAYOUT_ACTIVITY = "activity"; +var LAYOUT_PICKER_GRID = "pickerGrid"; +var LAYOUT_PICKER_TABLE = "pickerTable"; + +// packages/dataviews/build-module/components/dataviews-context/index.mjs +var DataViewsContext = (0, import_element3.createContext)({ + view: { type: LAYOUT_TABLE }, + onChangeView: () => { + }, + fields: [], + data: [], + paginationInfo: { + totalItems: 0, + totalPages: 0 + }, + selection: [], + onChangeSelection: () => { + }, + setOpenedFilter: () => { + }, + openedFilter: null, + getItemId: (item) => item.id, + isItemClickable: () => true, + renderItemLink: void 0, + containerWidth: 0, + containerRef: (0, import_element3.createRef)(), + resizeObserverRef: () => { + }, + defaultLayouts: { list: {}, grid: {}, table: {} }, + filters: [], + isShowingFilter: false, + setIsShowingFilter: () => { + }, + hasInfiniteScrollHandler: false, + config: { + perPageSizes: [] + } +}); +DataViewsContext.displayName = "DataViewsContext"; +var dataviews_context_default = DataViewsContext; + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var import_i18n21 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_i18n9 = __toESM(require_i18n(), 1); +var import_components6 = __toESM(require_components(), 1); +var import_element10 = __toESM(require_element(), 1); +var import_keycodes = __toESM(require_keycodes(), 1); + +// packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs +var import_components = __toESM(require_components(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +function DataViewsSelectionCheckbox({ + selection, + onChangeSelection, + item, + getItemId: getItemId2, + titleField, + disabled, + ...extraProps +}) { + const id = getItemId2(item); + const checked = !disabled && selection.includes(id); + const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n2.__)("(no title)"); + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + import_components.CheckboxControl, + { + className: "dataviews-selection-checkbox", + "aria-label": selectionLabel, + "aria-disabled": disabled, + checked, + onChange: () => { + if (disabled) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + }, + ...extraProps + } + ); +} + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_components2 = __toESM(require_components(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_element4 = __toESM(require_element(), 1); +var import_data3 = __toESM(require_data(), 1); +var import_compose = __toESM(require_compose(), 1); + +// packages/dataviews/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/dataviews" +); + +// packages/dataviews/build-module/components/dataviews-item-actions/index.mjs +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +var { Menu, kebabCase } = unlock(import_components2.privateApis); +function ButtonTrigger({ + action, + onClick, + items, + variant +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components2.Button, + { + disabled: !!action.disabled, + accessibleWhenDisabled: true, + size: "compact", + variant, + onClick, + children: label + } + ); +} +function MenuItemTrigger({ + action, + onClick, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Menu.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Menu.ItemLabel, { children: label }) }); +} +function ActionModal({ + action, + items, + closeModal +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components2.Modal, + { + title: modalHeader || label, + __experimentalHideHeader: !!action.hideModalHeader, + onRequestClose: closeModal, + focusOnMount: action.modalFocusOnMount ?? true, + size: action.modalSize || "medium", + overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase( + action.id + )}`, + children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(action.RenderModal, { items, closeModal }) + } + ); +} +function ActionsMenuGroup({ + actions, + item, + registry, + setActiveModalAction +}) { + const { primaryActions, regularActions } = (0, import_element4.useMemo)(() => { + return actions.reduce( + (acc, action) => { + (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); + return acc; + }, + { + primaryActions: [], + regularActions: [] + } + ); + }, [actions]); + const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + MenuItemTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item] + }, + action.id + )); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Menu.Group, { children: [ + renderActionGroup(primaryActions), + primaryActions.length > 0 && regularActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Menu.Separator, {}), + renderActionGroup(regularActions) + ] }); +} +function ItemActions({ + item, + actions, + isCompact +}) { + const registry = (0, import_data3.useRegistry)(); + const { primaryActions, eligibleActions } = (0, import_element4.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isCompact) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + isSmall: true, + registry + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)( + Stack, + { + direction: "row", + justify: "flex-end", + className: "dataviews-item-actions", + style: { + flexShrink: 0, + width: "auto" + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + CompactItemActions, + { + item, + actions: eligibleActions, + registry + } + ) + ] + } + ); +} +function CompactItemActions({ + item, + actions, + isSmall, + registry +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)( + null + ); + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Menu, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + Menu.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + import_components2.Button, + { + size: isSmall ? "small" : "compact", + icon: more_vertical_default, + label: (0, import_i18n3.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + className: "dataviews-all-actions-button" + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Menu.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionsMenuGroup, + { + actions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} +function PrimaryActions({ + item, + actions, + registry, + buttonVariant +}) { + const [activeModalAction, setActiveModalAction] = (0, import_element4.useState)(null); + const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<"); + if (isMobileViewport) { + return null; + } + if (!Array.isArray(actions) || actions.length === 0) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [ + actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ButtonTrigger, + { + action, + onClick: () => { + if ("RenderModal" in action) { + setActiveModalAction(action); + return; + } + action.callback([item], { registry }); + }, + items: [item], + variant: buttonVariant + }, + action.id + )), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_components3 = __toESM(require_components(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); +var import_element5 = __toESM(require_element(), 1); +var import_data4 = __toESM(require_data(), 1); +var import_compose2 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/utils/get-footer-message.mjs +var import_i18n4 = __toESM(require_i18n(), 1); +function getFooterMessage(selectionCount, itemsCount, totalItems) { + if (selectionCount > 0) { + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item selected", "%d Items selected", selectionCount), + selectionCount + ); + } + if (totalItems > itemsCount) { + return (0, import_i18n4.sprintf)( + /* translators: %1$d: number of items. %2$d: total number of items. */ + (0, import_i18n4._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), + itemsCount, + totalItems + ); + } + return (0, import_i18n4.sprintf)( + /* translators: %d: number of items. */ + (0, import_i18n4._n)("%d Item", "%d Items", itemsCount), + itemsCount + ); +} + +// packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +function ActionWithModal({ + action, + items, + ActionTriggerComponent +}) { + const [isModalOpen, setIsModalOpen] = (0, import_element5.useState)(false); + const actionTriggerProps = { + action, + onClick: () => { + setIsModalOpen(true); + }, + items + }; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), + isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + ActionModal, + { + action, + items, + closeModal: () => setIsModalOpen(false) + } + ) + ] }); +} +function useHasAPossibleBulkAction(actions, item) { + return (0, import_element5.useMemo)(() => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }, [actions, item]); +} +function useSomeItemHasAPossibleBulkAction(actions, data) { + return (0, import_element5.useMemo)(() => { + return data.some((item) => { + return actions.some((action) => { + return action.supportsBulk && (!action.isEligible || action.isEligible(item)); + }); + }); + }, [actions, data]); +} +function BulkSelectionCheckbox({ + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 +}) { + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return actions.some( + (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) + ); + }); + }, [data, actions]); + const selectedItems = data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + const areAllSelected = selectedItems.length === selectableItems.length; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components3.CheckboxControl, + { + className: "dataviews-view-table-selection-checkbox", + checked: areAllSelected, + indeterminate: !areAllSelected && !!selectedItems.length, + onChange: () => { + if (areAllSelected) { + onChangeSelection([]); + } else { + onChangeSelection( + selectableItems.map((item) => getItemId2(item)) + ); + } + }, + "aria-label": areAllSelected ? (0, import_i18n5.__)("Deselect all") : (0, import_i18n5.__)("Select all") + } + ); +} +function ActionTrigger({ + action, + onClick, + isBusy, + items +}) { + const label = typeof action.label === "string" ? action.label : action.label(items); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + if (isMobile) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + label, + icon: action.icon, + size: "compact", + onClick, + isBusy + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components3.Button, + { + disabled: isBusy, + accessibleWhenDisabled: true, + size: "compact", + onClick, + isBusy, + children: label + } + ); +} +var EMPTY_ARRAY2 = []; +function ActionButton({ + action, + selectedItems, + actionInProgress, + setActionInProgress +}) { + const registry = (0, import_data4.useRegistry)(); + const selectedEligibleItems = (0, import_element5.useMemo)(() => { + return selectedItems.filter((item) => { + return !action.isEligible || action.isEligible(item); + }); + }, [action, selectedItems]); + if ("RenderModal" in action) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + ActionWithModal, + { + action, + items: selectedEligibleItems, + ActionTriggerComponent: ActionTrigger + }, + action.id + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + ActionTrigger, + { + action, + onClick: async () => { + setActionInProgress(action.id); + await action.callback(selectedItems, { + registry + }); + setActionInProgress(null); + }, + items: selectedEligibleItems, + isBusy: actionInProgress === action.id + }, + action.id + ); +} +function renderFooterContent(data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { + const message2 = getFooterMessage( + selection.length, + data.length, + paginationInfo.totalItems + ); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__container", + gap: "md", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ), + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), + /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-bulk-actions-footer__action-buttons", + gap: "xs", + children: [ + actionsToShow.map((action) => { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + ActionButton, + { + action, + selectedItems, + actionInProgress, + setActionInProgress + }, + action.id + ); + }), + selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + import_components3.Button, + { + icon: close_small_default, + showTooltip: true, + tooltipPosition: "top", + size: "compact", + label: (0, import_i18n5.__)("Cancel"), + disabled: !!actionInProgress, + accessibleWhenDisabled: false, + onClick: () => { + onChangeSelection(EMPTY_ARRAY2); + } + } + ) + ] + } + ) + ] + } + ); +} +function FooterContent({ + selection, + actions, + onChangeSelection, + data, + getItemId: getItemId2, + paginationInfo +}) { + const [actionInProgress, setActionInProgress] = (0, import_element5.useState)( + null + ); + const footerContentRef = (0, import_element5.useRef)(null); + const isMobile = (0, import_compose2.useViewportMatch)("medium", "<"); + const bulkActions = (0, import_element5.useMemo)( + () => actions.filter((action) => action.supportsBulk), + [actions] + ); + const selectableItems = (0, import_element5.useMemo)(() => { + return data.filter((item) => { + return bulkActions.some( + (action) => !action.isEligible || action.isEligible(item) + ); + }); + }, [data, bulkActions]); + const selectedItems = (0, import_element5.useMemo)(() => { + return data.filter( + (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) + ); + }, [selection, data, getItemId2, selectableItems]); + const actionsToShow = (0, import_element5.useMemo)( + () => actions.filter((action) => { + return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( + (item) => !action.isEligible || action.isEligible(item) + ); + }), + [actions, selectedItems, isMobile] + ); + if (!actionInProgress) { + if (footerContentRef.current) { + footerContentRef.current = null; + } + return renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } else if (!footerContentRef.current) { + footerContentRef.current = renderFooterContent( + data, + actions, + getItemId2, + selection, + actionsToShow, + selectedItems, + actionInProgress, + setActionInProgress, + onChangeSelection, + paginationInfo + ); + } + return footerContentRef.current; +} +function BulkActionsFooter() { + const { + data, + selection, + actions = EMPTY_ARRAY2, + onChangeSelection, + getItemId: getItemId2, + paginationInfo + } = (0, import_element5.useContext)(dataviews_context_default); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + FooterContent, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2, + paginationInfo + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_i18n6 = __toESM(require_i18n(), 1); +var import_components4 = __toESM(require_components(), 1); +var import_element6 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/utils/get-hideable-fields.mjs +function getHideableFields(view, fields) { + const togglableFields = [ + view?.titleField, + view?.mediaField, + view?.descriptionField + ].filter(Boolean); + return fields.filter( + (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock(import_components4.privateApis); +function WithMenuSeparators({ children }) { + return import_element6.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_element6.Fragment, { children: [ + i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Separator, {}), + child + ] }, i2)); +} +var _HeaderMenu = (0, import_element6.forwardRef)(function HeaderMenu({ + fieldId, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove = true, + canInsertLeft = true, + canInsertRight = true +}, ref) { + const visibleFieldIds = view.fields ?? []; + const index = visibleFieldIds?.indexOf(fieldId); + const isSorted = view.sort?.field === fieldId; + let isHidable = false; + let isSortable = false; + let canAddFilter = false; + let operators = []; + const field = fields.find((f2) => f2.id === fieldId); + const { setIsShowingFilter } = (0, import_element6.useContext)(dataviews_context_default); + if (!field) { + return null; + } + isHidable = field.enableHiding !== false; + isSortable = field.enableSorting !== false; + const header = field.header; + operators = !!field.filterBy && field.filterBy?.operators || []; + canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; + if (!isSortable && !canMove && !isHidable && !canAddFilter) { + return header; + } + const hiddenFields = getHideableFields(view, fields).filter( + (f2) => !visibleFieldIds.includes(f2.id) + ); + const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; + const isRtl = (0, import_i18n6.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)( + Menu2.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + import_components4.Button, + { + size: "compact", + className: "dataviews-view-table-header-button", + ref, + variant: "tertiary" + } + ), + children: [ + header, + view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(WithMenuSeparators, { children: [ + isSortable && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Group, { children: SORTING_DIRECTIONS.map( + (direction) => { + const isChecked = view.sort && isSorted && view.sort.direction === direction; + const value = `${fieldId}-${direction}`; + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.RadioItem, + { + name: "view-table-sorting", + value, + checked: isChecked, + onChange: () => { + onChangeView({ + ...view, + sort: { + field: fieldId, + direction + }, + showLevels: false + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: sortLabels[direction] }) + }, + value + ); + } + ) }), + canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components4.Icon, { icon: funnel_default }), + onClick: () => { + setOpenedFilter(fieldId); + setIsShowingFilter(true); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: fieldId, + value: void 0, + operator: operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Add filter") }) + } + ) }), + (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Menu2.Group, { children: [ + canMove && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components4.Icon, { icon: arrow_left_default }), + disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, + onClick: () => { + const targetIndex = isRtl ? index + 1 : index - 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move left") }) + } + ), + canMove && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components4.Icon, { icon: arrow_right_default }), + disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, + onClick: () => { + const targetIndex = isRtl ? index - 1 : index + 1; + const newFields = [ + ...visibleFieldIds + ]; + newFields.splice(index, 1); + newFields.splice( + targetIndex, + 0, + fieldId + ); + onChangeView({ + ...view, + fields: newFields + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Move right") }) + } + ), + canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert left") }) }), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index + 1 : index; + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Menu2, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Insert right") }) }), + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.Popover, { children: hiddenFields.map((hiddenField) => { + const insertIndex = isRtl ? index : index + 1; + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + onClick: () => { + onChangeView({ + ...view, + fields: [ + ...visibleFieldIds.slice( + 0, + insertIndex + ), + hiddenField.id, + ...visibleFieldIds.slice( + insertIndex + ) + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: hiddenField.label }) + }, + hiddenField.id + ); + }) }) + ] }), + isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Menu2.Item, + { + prefix: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components4.Icon, { icon: unseen_default }), + onClick: () => { + onHide(field); + onChangeView({ + ...view, + fields: visibleFieldIds.filter( + (id) => id !== fieldId + ) + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Menu2.ItemLabel, { children: (0, import_i18n6.__)("Hide column") }) + } + ) + ] }) + ] }) }) + ] }); +}); +var ColumnHeaderMenu = _HeaderMenu; +var column_header_menu_default = ColumnHeaderMenu; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs +var import_element7 = __toESM(require_element(), 1); +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +function getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className +}) { + if (!isItemClickable(item) || !onClickItem) { + return { className }; + } + return { + className: className ? `${className} ${className}--clickable` : void 0, + role: "button", + tabIndex: 0, + onClick: (event) => { + event.stopPropagation(); + onClickItem(item); + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + onClickItem(item); + } + } + }; +} +function ItemClickWrapper({ + item, + isItemClickable, + onClickItem, + renderItemLink, + className, + children, + ...extraProps +}) { + if (!isItemClickable(item)) { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className, ...extraProps, children }); + } + if (renderItemLink) { + const renderedElement = renderItemLink({ + item, + className: `${className} ${className}--clickable`, + ...extraProps, + children + }); + return (0, import_element7.cloneElement)(renderedElement, { + onClick: (event) => { + event.stopPropagation(); + if (renderedElement.props.onClick) { + renderedElement.props.onClick(event); + } + }, + onKeyDown: (event) => { + if (event.key === "Enter" || event.key === "" || event.key === " ") { + event.stopPropagation(); + if (renderedElement.props.onKeyDown) { + renderedElement.props.onKeyDown(event); + } + } + } + }); + } + const clickProps = getClickableItemProps({ + item, + isItemClickable, + onClickItem, + className + }); + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ...clickProps, ...extraProps, children }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +function ColumnPrimary({ + item, + level, + titleField, + mediaField, + descriptionField, + onClickItem, + renderItemLink, + isItemClickable +}) { + return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ + mediaField && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", + "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "32px" } + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)( + Stack, + { + direction: "column", + align: "flex-start", + className: "dataviews-view-table__primary-column-content", + children: [ + titleField && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", + children: [ + level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: "dataviews-view-table__level", children: [ + Array(level).fill("\u2014").join(" "), + "\xA0" + ] }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(titleField.render, { item, field: titleField }) + ] + } + ), + descriptionField && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) + ] + } + ) + ] }); +} +var column_primary_default = ColumnPrimary; + +// packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs +var import_compose3 = __toESM(require_compose(), 1); +var import_element8 = __toESM(require_element(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); +var isScrolledToEnd = (element) => { + if ((0, import_i18n7.isRTL)()) { + const scrollLeft = Math.abs(element.scrollLeft); + return scrollLeft <= 1; + } + return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; +}; +function useIsHorizontalScrollEnd({ + scrollContainerRef, + enabled = false +}) { + const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element8.useState)(false); + const handleIsHorizontalScrollEnd = (0, import_compose3.useDebounce)( + (0, import_element8.useCallback)(() => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); + } + }, [scrollContainerRef, setIsHorizontalScrollEnd]), + 200 + ); + (0, import_element8.useEffect)(() => { + if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { + return () => { + }; + } + handleIsHorizontalScrollEnd(); + scrollContainerRef.current.addEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.addEventListener("resize", handleIsHorizontalScrollEnd); + return () => { + scrollContainerRef.current?.removeEventListener( + "scroll", + handleIsHorizontalScrollEnd + ); + window.removeEventListener("resize", handleIsHorizontalScrollEnd); + }; + }, [scrollContainerRef, enabled]); + return isHorizontalScrollEnd; +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs +function getDataByGroup(data, groupByField) { + return data.reduce((groups, item) => { + const groupName = groupByField.getValue({ item }); + if (!groups.has(groupName)) { + groups.set(groupName, []); + } + groups.get(groupName)?.push(item); + return groups; + }, /* @__PURE__ */ new Map()); +} + +// packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs +var import_components5 = __toESM(require_components(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); +var import_element9 = __toESM(require_element(), 1); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +function FieldItem({ + field, + isVisible: isVisible2, + onToggleVisibility +}) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components5.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components5.Icon, { icon: check_default }) }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) + ] }) }); +} +function isDefined(item) { + return !!item; +} +function PropertiesSection({ + showLabel = true +}) { + const { view, fields, onChangeView } = (0, import_element9.useContext)(dataviews_context_default); + const regularFields = getHideableFields(view, fields); + if (!regularFields?.length) { + return null; + } + const titleField = fields.find((f2) => f2.id === view.titleField); + const previewField2 = fields.find((f2) => f2.id === view.mediaField); + const descriptionField = fields.find( + (f2) => f2.id === view.descriptionField + ); + const lockedFields = [ + { + field: titleField, + isVisibleFlag: "showTitle" + }, + { + field: previewField2, + isVisibleFlag: "showMedia" + }, + { + field: descriptionField, + isVisibleFlag: "showDescription" + } + ].filter(({ field }) => isDefined(field)); + const visibleFieldIds = view.fields ?? []; + const visibleRegularFieldsCount = regularFields.filter( + (f2) => visibleFieldIds.includes(f2.id) + ).length; + const visibleLockedFields = lockedFields.filter( + ({ isVisibleFlag }) => ( + // @ts-expect-error + view[isVisibleFlag] ?? true + ) + ); + const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; + const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ + showLabel && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components5.BaseControl.VisualLabel, { children: (0, import_i18n8.__)("Properties") }), + /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config__properties", + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_components5.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ + lockedFields.map(({ field, isVisibleFlag }) => { + const isVisible2 = view[isVisibleFlag] ?? true; + const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + [isVisibleFlag]: !isVisible2 + }); + } + }, + field.id + ); + }), + regularFields.map((field) => { + const isVisible2 = visibleFieldIds.includes(field.id); + const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + FieldItem, + { + field: fieldToRender, + isVisible: isVisible2, + onToggleVisibility: () => { + onChangeView({ + ...view, + fields: isVisible2 ? visibleFieldIds.filter( + (fieldId) => fieldId !== field.id + ) : [...visibleFieldIds, field.id] + }); + } + }, + field.id + ); + }) + ] }) + } + ) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +function TableColumnField({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(field.render, { item, field }) }); +} +function TableRow({ + hasBulkActions, + item, + level, + actions, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + isItemClickable, + onClickItem, + renderItemLink, + onChangeSelection, + isActionsColumnSticky, + posinset +}) { + const { paginationInfo } = (0, import_element10.useContext)(dataviews_context_default); + const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); + const isSelected2 = hasPossibleBulkAction && selection.includes(id); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const isTouchDeviceRef = (0, import_element10.useRef)(false); + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": hasPossibleBulkAction && isSelected2, + "has-bulk-actions": hasPossibleBulkAction + }), + onTouchStart: () => { + isTouchDeviceRef.current = true; + }, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : void 0, + onMouseDown: (event) => { + const isMetaClick = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { + event?.preventDefault(); + } + }, + onClick: (event) => { + if (!hasPossibleBulkAction) { + return; + } + const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey; + if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasPossibleBulkAction + } + ) }) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + column_primary_default, + { + item, + level, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable, + onClickItem, + renderItemLink + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + TableColumnField, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }), + !!actions?.length && // Disable reason: we are not making the element interactive, + // but preventing any click events from bubbling up to the + // table row. This allows us to add a click handler to the row + // itself (to toggle row selection) without erroneously + // intercepting click events from ItemActions. + /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "td", + { + className: clsx_default("dataviews-view-table__actions-column", { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": isActionsColumnSticky + }), + onClick: (e2) => e2.stopPropagation(), + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ItemActions, { item, actions }) + } + ) + ] + } + ); +} +function ViewTable({ + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + view, + className, + empty +}) { + const { containerRef } = (0, import_element10.useContext)(dataviews_context_default); + const headerMenuRefs = (0, import_element10.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element10.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element10.useState)(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element10.useState)(null); + (0, import_element10.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element10.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const handleHeaderContextMenu = (event) => { + event.preventDefault(); + event.stopPropagation(); + const virtualAnchor = { + getBoundingClientRect: () => ({ + x: event.clientX, + y: event.clientY, + top: event.clientY, + left: event.clientX, + right: event.clientX, + bottom: event.clientY, + width: 0, + height: 0, + toJSON: () => ({}) + }) + }; + window.requestAnimationFrame(() => { + setContextMenuAnchor(virtualAnchor); + }); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const isRtl = (0, import_i18n9.isRTL)(); + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( + "table", + { + className: clsx_default("dataviews-view-table", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ), + "has-bulk-actions": hasBulkActions + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("colgroup", { children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("col", { className: "dataviews-view-table__col-first-data" }), + columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "col", + { + className: clsx_default( + `dataviews-view-table__col-${column}`, + { + "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 + } + ) + }, + `col-${column}` + )), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("col", { className: "dataviews-view-table__col-actions" }) + ] }), + contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + import_components6.Popover, + { + anchor: contextMenuAnchor, + onClose: () => setContextMenuAnchor(null), + placement: "bottom-start", + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(PropertiesSection, { showLabel: false }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("tr", { className: "dataviews-view-table__row", children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "th", + { + className: "dataviews-view-table__checkbox-column", + scope: "col", + onContextMenu: handleHeaderContextMenu, + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false, + canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, + canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: canInsertOrMove, + canInsertLeft: canInsertOrMove, + canInsertRight: canInsertOrMove + } + ) + }, + column + ); + }), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "th", + { + className: clsx_default( + "dataviews-view-table__actions-column", + { + "dataviews-view-table__actions-column--sticky": true, + "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd + } + ), + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n9.__)("Actions") }) + } + ) + ] }) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("tbody", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), + className: "dataviews-view-table__group-header-cell", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n9.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n9.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) }), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd + }, + getItemId2(item) + )) + ] }, `group-${groupName}`) + ) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + TableRow, + { + item, + level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0, + hasBulkActions, + actions, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable, + isActionsColumnSticky: !isHorizontalScrollEnd, + posinset: isInfiniteScroll ? index + 1 : void 0 + }, + getItemId2(item) + )) }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components6.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components6.Spinner, {}) }) + ] + } + ) + ] }); +} +var table_default = ViewTable; + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_components9 = __toESM(require_components(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_components8 = __toESM(require_components(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); +var import_compose4 = __toESM(require_compose(), 1); +var import_keycodes2 = __toESM(require_keycodes(), 1); +var import_element12 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs +var import_components7 = __toESM(require_components(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); +var import_element11 = __toESM(require_element(), 1); +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +var imageSizes = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; +function useGridColumns() { + const context = (0, import_element11.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element11.useMemo)(() => { + const containerWidth = context.containerWidth; + const gap = 32; + const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; + const columns = Math.floor( + (containerWidth + gap) / (previewSize + gap) + ); + return Math.max(1, columns); + }, [context.containerWidth, view.layout?.previewSize]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); +var { Badge } = unlock(import_components8.privateApis); +function chunk(array, size) { + const chunks = []; + for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { + chunks.push(array.slice(i2, i2 + size)); + } + return chunks; +} +var GridItem = (0, import_element12.forwardRef)(function GridItem2({ + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config, + ...props +}, ref) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasBulkAction = useHasAPossibleBulkAction(actions, item); + const id = getItemId2(item); + const instanceId = (0, import_compose4.useInstanceId)(GridItem2); + const isSelected2 = selection.includes(id); + const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); + const rendersMediaField = showMedia && mediaField?.render; + const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : mediaPlaceholder; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(titleField.render, { item, field: titleField }) : null; + let mediaA11yProps; + let titleA11yProps; + if (isItemClickable(item) && onClickItem) { + if (renderedTitleField) { + mediaA11yProps = { + "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` + }; + titleA11yProps = { + id: `dataviews-view-grid__title-field-${instanceId}` + }; + } else { + mediaA11yProps = { + "aria-label": (0, import_i18n11.__)("Navigate to item") + }; + } + } + return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)( + Stack, + { + direction: "column", + ...props, + ref, + className: clsx_default( + props.className, + "dataviews-view-grid__row__gridcell", + "dataviews-view-grid__card", + { + "is-selected": hasBulkAction && isSelected2 + } + ), + onClickCapture: (event) => { + props.onClickCapture?.(event); + if ((0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey) { + event.stopPropagation(); + event.preventDefault(); + if (!hasBulkAction) { + return; + } + onChangeSelection( + selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] + ); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: clsx_default("dataviews-view-grid__media", { + "dataviews-view-grid__media--placeholder": !rendersMediaField + }), + ...mediaA11yProps, + children: renderedMediaField + } + ), + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: !hasBulkAction + } + ), + !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ItemActions, { item, actions, isCompact: true }) }), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-grid__title-field dataviews-title-field", + ...titleA11yProps, + title: titleField?.getValueFormatted({ + item, + field: titleField + }) || void 0, + children: renderedTitleField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + Badge, + { + className: "dataviews-view-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + import_components8.Flex, + { + className: "dataviews-view-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components8.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components8.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), + /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + import_components8.FlexItem, + { + className: "dataviews-view-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + } + ); +}); +function CompositeGrid({ + data, + isInfiniteScroll, + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element12.useContext)(dataviews_context_default); + const gridColumns = useGridColumns(); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const size = "900px"; + const totalRows = Math.ceil(data.length / gridColumns); + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + import_components8.Composite, + { + role: isInfiniteScroll ? "feed" : "grid", + className: clsx_default("dataviews-view-grid", className), + focusWrap: true, + "aria-busy": isLoading, + "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, + ref: resizeObserverRef, + children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + import_components8.Composite.Row, + { + render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + role: "row", + "aria-rowindex": i2 + 1, + "aria-label": (0, import_i18n11.sprintf)( + /* translators: %d: The row number in the grid */ + (0, import_i18n11.__)("Row %d"), + i2 + 1 + ), + className: "dataviews-view-grid__row", + style: { + gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` + } + } + ), + children: row.map((item, indexInRow) => { + const index = i2 * gridColumns + indexInRow; + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + import_components8.Composite.Item, + { + render: (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + GridItem, + { + ...props, + role: isInfiniteScroll ? "article" : "gridcell", + "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, + "aria-posinset": isInfiniteScroll ? index + 1 : void 0, + view, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + item, + actions, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + hasBulkActions, + config: { + sizes: size + } + } + ) + }, + getItemId2(item) + ); + }) + }, + i2 + )) + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +function ViewGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + selection, + view, + className, + empty +}) { + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const gridProps = { + className, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions + }; + return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n12.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n12.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + CompositeGrid, + { + ...gridProps, + data: groupItems, + isInfiniteScroll: false + } + ) + ] + }, + groupName + ) + ) }), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_components9.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_components9.Spinner, {}) }) + ] + }); +} +var grid_default = ViewGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs +var import_compose5 = __toESM(require_compose(), 1); +var import_components10 = __toESM(require_components(), 1); +var import_element13 = __toESM(require_element(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); +var import_data5 = __toESM(require_data(), 1); +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock(import_components10.privateApis); +function generateItemWrapperCompositeId(idPrefix) { + return `${idPrefix}-item-wrapper`; +} +function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { + return `${idPrefix}-primary-action-${primaryActionId}`; +} +function generateDropdownTriggerCompositeId(idPrefix) { + return `${idPrefix}-dropdown`; +} +function PrimaryActionGridCell({ + idPrefix, + primaryAction, + item +}) { + const registry = (0, import_data5.useRegistry)(); + const [isModalOpen, setIsModalOpen] = (0, import_element13.useState)(false); + const compositeItemId = generatePrimaryActionCompositeId( + idPrefix, + primaryAction.id + ); + const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); + return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + text: label, + size: "small", + onClick: () => setIsModalOpen(true) + } + ), + children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + ActionModal, + { + action: primaryAction, + items: [item], + closeModal: () => setIsModalOpen(false) + } + ) + } + ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite.Item, + { + id: compositeItemId, + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Button, + { + disabled: !!primaryAction.disabled, + accessibleWhenDisabled: true, + size: "small", + onClick: () => { + primaryAction.callback([item], { registry }); + }, + children: label + } + ) + } + ) }, primaryAction.id); +} +function ListItem({ + view, + actions, + idPrefix, + isSelected: isSelected2, + item, + titleField, + mediaField, + descriptionField, + onSelect, + otherFields, + onDropdownTriggerKeyDown, + posinset +}) { + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element13.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element13.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element13.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element13.useContext)(dataviews_context_default); + (0, import_element13.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element13.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryAction: _primaryActions[0], + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; + const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { sizes: "52px" } + } + ) }) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(titleField.render, { item, field: titleField }) : null; + const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "row", + gap: "md", + className: "dataviews-view-list__item-actions", + children: [ + primaryAction && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + PrimaryActionGridCell, + { + idPrefix, + primaryAction, + item + } + ), + !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { role: "gridcell", children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Menu3, { placement: "bottom-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + Menu3.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite.Item, + { + id: generateDropdownTriggerCompositeId( + idPrefix + ), + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Button, + { + size: "small", + icon: more_vertical_default, + label: (0, import_i18n13.__)("Actions"), + accessibleWhenDisabled: true, + disabled: !actions.length, + onKeyDown: onDropdownTriggerKeyDown + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Menu3.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + ActionsMenuGroup, + { + actions: eligibleActions, + item, + registry, + setActiveModalAction + } + ) }) + ] }), + !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + ActionModal, + { + action: activeModalAction, + items: [item], + closeModal: () => setActiveModalAction(null) + } + ) + ] }) + ] + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite.Row, + { + ref: itemRef, + render: ( + /* aria-posinset breaks Composite.Row if passed to it directly. */ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + "div", + { + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 + } + ) + ), + role: infiniteScrollEnabled ? "article" : "row", + className: clsx_default({ + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleHover, + onMouseLeave: handleHover, + children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-view-list__item-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite.Item, + { + id: generateItemWrapperCompositeId(idPrefix), + "aria-pressed": isSelected2, + "aria-labelledby": labelId, + "aria-describedby": descriptionId, + className: "dataviews-view-list__item", + onClick: () => onSelect(item) + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "row", + gap: "md", + justify: "start", + align: "flex-start", + style: { flex: 1, minWidth: 0 }, + children: [ + renderedMediaField, + /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "column", + gap: "xs", + className: "dataviews-view-list__field-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Stack, { direction: "row", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + "div", + { + className: "dataviews-title-field dataviews-view-list__title-field", + id: labelId, + children: renderedTitleField + } + ), + usedActions + ] }), + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + "div", + { + className: "dataviews-view-list__fields", + id: descriptionId, + children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + "div", + { + className: "dataviews-view-list__field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.VisuallyHidden, + { + as: "span", + className: "dataviews-view-list__field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) + } + ) + ] + } + ) + ] + } + ) + ] + } + ) + } + ); +} +function isDefined2(item) { + return !!item; +} +function ViewList(props) { + const { + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty + } = props; + const baseId = (0, import_compose5.useInstanceId)(ViewList, "view-list"); + const selectedItem = data?.findLast( + (item) => selection.includes(getItemId2(item)) + ); + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); + const onSelect = (item) => onChangeSelection([getItemId2(item)]); + const generateCompositeItemIdPrefix = (0, import_element13.useCallback)( + (item) => `${baseId}-${getItemId2(item)}`, + [baseId, getItemId2] + ); + const isActiveCompositeItem = (0, import_element13.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element13.useState)(void 0); + (0, import_element13.useEffect)(() => { + if (selectedItem) { + setActiveCompositeId( + generateItemWrapperCompositeId( + generateCompositeItemIdPrefix(selectedItem) + ) + ); + } + }, [selectedItem, generateCompositeItemIdPrefix]); + const activeItemIndex = data.findIndex( + (item) => isActiveCompositeItem(item, activeCompositeId ?? "") + ); + const previousActiveItemIndex = (0, import_compose5.usePrevious)(activeItemIndex); + const isActiveIdInList = activeItemIndex !== -1; + const selectCompositeItem = (0, import_element13.useCallback)( + (targetIndex, generateCompositeId) => { + const clampedIndex = Math.min( + data.length - 1, + Math.max(0, targetIndex) + ); + if (!data[clampedIndex]) { + return; + } + const itemIdPrefix = generateCompositeItemIdPrefix( + data[clampedIndex] + ); + const targetCompositeItemId = generateCompositeId(itemIdPrefix); + setActiveCompositeId(targetCompositeItemId); + document.getElementById(targetCompositeItemId)?.focus(); + }, + [data, generateCompositeItemIdPrefix] + ); + (0, import_element13.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element13.useCallback)( + (event) => { + if (event.key === "ArrowDown") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex + 1, + generateDropdownTriggerCompositeId + ); + } + if (event.key === "ArrowUp") { + event.preventDefault(); + selectCompositeItem( + activeItemIndex - 1, + generateDropdownTriggerCompositeId + ); + } + }, + [selectCompositeItem, activeItemIndex] + ); + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_components10.Spinner, {}) }) : empty) + } + ); + } + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite, + { + id: `${baseId}`, + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", {}), + className: "dataviews-view-list__group", + role: "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + Stack, + { + direction: "column", + gap: "lg", + className: clsx_default("dataviews-view-list", className), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n13.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n13.__)("%1$s: %2$s"), + groupField.label, + groupName + ) }), + groupItems.map((item) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown + }, + id + ); + }) + ] + }, + groupName + ) + ) + } + ) + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + import_components10.Composite, + { + id: baseId, + render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", {}), + className: clsx_default("dataviews-view-list", className, { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + children: data.map((item, index) => { + const id = generateCompositeItemIdPrefix(item); + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + ListItem, + { + view, + idPrefix: id, + actions, + item, + isSelected: item === selectedItem, + onSelect, + mediaField, + titleField, + descriptionField, + otherFields, + onDropdownTriggerKeyDown, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + }, + id + ); + }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_components10.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_components12 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs +var import_i18n14 = __toESM(require_i18n(), 1); +var import_element14 = __toESM(require_element(), 1); +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +function ActivityGroup({ + groupName, + groupData, + groupField, + showLabel = true, + children +}) { + const groupHeader = showLabel ? (0, import_element14.createInterpolateElement)( + // translators: %s: The label of the field e.g. "Status". + (0, import_i18n14.sprintf)((0, import_i18n14.__)("%s: "), groupField.label).trim(), + { + groupName: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( + groupField.render, + { + item: groupData[0], + field: groupField + } + ) + } + ) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(groupField.render, { item: groupData[0], field: groupField }); + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-activity__group", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), + children + ] + }, + groupName + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs +var import_components11 = __toESM(require_components(), 1); +var import_element15 = __toESM(require_element(), 1); +var import_data6 = __toESM(require_data(), 1); +var import_compose6 = __toESM(require_compose(), 1); +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +function ActivityItem(props) { + const { + view, + actions, + item, + titleField, + mediaField, + descriptionField, + otherFields, + posinset, + onClickItem, + renderItemLink, + isItemClickable + } = props; + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const itemRef = (0, import_element15.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element15.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element15.useMemo)(() => { + const _eligibleActions = actions.filter( + (action) => !action.isEligible || action.isEligible(item) + ); + const _primaryActions = _eligibleActions.filter( + (action) => action.isPrimary + ); + return { + primaryActions: _primaryActions, + eligibleActions: _eligibleActions + }; + }, [actions, item]); + const isMobileViewport = (0, import_compose6.useViewportMatch)("medium", "<"); + const density = view.layout?.density ?? "balanced"; + const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + mediaField.render, + { + item, + field: mediaField, + config: { + sizes: density === "comfortable" ? "32px" : "24px" + } + } + ) : null; + const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "span", + { + className: "dataviews-view-activity__item-bullet", + "aria-hidden": "true" + } + ) }); + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(titleField.render, { item, field: titleField }) : null; + const verticalGap = (0, import_element15.useMemo)(() => { + switch (density) { + case "comfortable": + return "md"; + default: + return "sm"; + } + }, [density]); + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + ref: itemRef, + role: infiniteScrollEnabled ? "article" : void 0, + "aria-posinset": posinset, + "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, + className: clsx_default( + "dataviews-view-activity__item", + density === "compact" && "is-compact", + density === "balanced" && "is-balanced", + density === "comfortable" && "is-comfortable" + ), + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + Stack, + { + direction: "column", + gap: "xs", + align: "center", + className: "dataviews-view-activity__item-type", + children: renderedMediaField + } + ), + /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + Stack, + { + direction: "column", + gap: verticalGap, + align: "flex-start", + className: "dataviews-view-activity__item-content", + children: [ + renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ItemClickWrapper, + { + item, + isItemClickable, + onClickItem, + renderItemLink, + className: "dataviews-view-activity__item-title", + children: renderedTitleField + } + ), + showDescription && descriptionField && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ) }), + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( + "div", + { + className: "dataviews-view-activity__item-field", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + import_components11.VisuallyHidden, + { + as: "span", + className: "dataviews-view-activity__item-field-label", + children: field.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + field.render, + { + item, + field + } + ) }) + ] + }, + field.id + )) }), + !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + PrimaryActions, + { + item, + actions: primaryActions, + registry, + buttonVariant: "secondary" + } + ) + ] + } + ), + (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu + // there if there are any actions at all. + isMobileViewport && // At the same time, only show the menu if there are actions to show. + eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + ItemActions, + { + item, + actions: eligibleActions, + isCompact: true + } + ) }) + ] }) + } + ); +} +var activity_item_default = ActivityItem; + +// packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs +var import_react3 = __toESM(require_react(), 1); +function isDefined3(item) { + return !!item; +} +function ActivityItems(props) { + const { data, fields, getItemId: getItemId2, view } = props; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); + return data.map((item, index) => { + return /* @__PURE__ */ (0, import_react3.createElement)( + activity_item_default, + { + ...props, + key: getItemId2(item), + item, + mediaField, + titleField, + descriptionField, + otherFields, + posinset: view.infiniteScrollEnabled ? index + 1 : void 0 + } + ); + }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); +function ViewActivity(props) { + const { empty, data, fields, isLoading, view, className } = props; + const hasData = data?.length; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + children: !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components12.Spinner, {}) }) : empty) + } + ); + } + const wrapperClassName = clsx_default("dataviews-view-activity", className); + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; + if (hasData && groupField && dataByGroup) { + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Stack, { direction: "column", gap: "sm", className: wrapperClassName, children: groupedEntries.map( + ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + ActivityGroup, + { + groupName, + groupData, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + ActivityItems, + { + ...props, + data: groupData + } + ) + }, + groupName + ) + ) }); + } + return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "div", + { + className: wrapperClassName, + role: view.infiniteScrollEnabled ? "feed" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ActivityItems, { ...props }) + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components12.Spinner, {}) }) + ] }); +} + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_components15 = __toESM(require_components(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); +var import_compose7 = __toESM(require_compose(), 1); +var import_element19 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_components14 = __toESM(require_components(), 1); +var import_data7 = __toESM(require_data(), 1); +var import_element17 = __toESM(require_element(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/components/dataviews-pagination/index.mjs +var import_components13 = __toESM(require_components(), 1); +var import_element16 = __toESM(require_element(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +function DataViewsPagination() { + const { + view, + onChangeView, + paginationInfo: { totalItems = 0, totalPages } + } = (0, import_element16.useContext)(dataviews_context_default); + if (!totalItems || !totalPages || view.infiniteScrollEnabled) { + return null; + } + const currentPage = view.page ?? 1; + const pageSelectOptions = Array.from(Array(totalPages)).map( + (_, i2) => { + const page = i2 + 1; + return { + value: page.toString(), + label: page.toString(), + "aria-label": currentPage === page ? (0, import_i18n15.sprintf)( + // translators: 1: current page number. 2: total number of pages. + (0, import_i18n15.__)("Page %1$d of %2$d"), + currentPage, + totalPages + ) : page.toString() + }; + } + ); + return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)( + Stack, + { + direction: "row", + className: "dataviews-pagination", + justify: "end", + align: "center", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + align: "center", + gap: "xs", + className: "dataviews-pagination__page-select", + children: (0, import_element16.createInterpolateElement)( + (0, import_i18n15.sprintf)( + // translators: 1: Current page number, 2: Total number of pages. + (0, import_i18n15._x)( + "
      Page
      %1$s
      of %2$d
      ", + "paging" + ), + "", + totalPages + ), + { + div: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { "aria-hidden": true }), + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components13.SelectControl, + { + "aria-label": (0, import_i18n15.__)("Current page"), + value: currentPage.toString(), + options: pageSelectOptions, + onChange: (newValue) => { + onChangeView({ + ...view, + page: +newValue + }); + }, + size: "small", + variant: "minimal" + } + ) + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ + ...view, + page: currentPage - 1 + }), + disabled: currentPage === 1, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Previous page"), + icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components13.Button, + { + onClick: () => onChangeView({ ...view, page: currentPage + 1 }), + disabled: currentPage >= totalPages, + accessibleWhenDisabled: true, + label: (0, import_i18n15.__)("Next page"), + icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + showTooltip: true, + size: "compact", + tooltipPosition: "top" + } + ) + ] }) + ] + } + ); +} +var dataviews_pagination_default = (0, import_element16.memo)(DataViewsPagination); + +// packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +function useIsMultiselectPicker(actions) { + return (0, import_element17.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element18.forwardRef)(({ className, previewSize, ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + "div", + { + ref, + className: clsx_default("dataviews-view-grid-items", className), + style: { + gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` + }, + ...props + } + ); +}); + +// packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var { Badge: Badge2 } = unlock(import_components15.privateApis); +function GridItem3({ + view, + multiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config, + posinset, + setsize +}) { + const { showTitle = true, showMedia = true, showDescription = true } = view; + const id = getItemId2(item); + const isSelected2 = selection.includes(id); + const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + mediaField.render, + { + item, + field: mediaField, + config + } + ) : null; + const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(titleField.render, { item, field: titleField }) : null; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + import_components15.Composite.Item, + { + "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n17.__)("(no title)") : void 0, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Stack, { direction: "column", children, ...props }), + role: "option", + "aria-posinset": posinset, + "aria-setsize": setsize, + className: clsx_default("dataviews-view-picker-grid__card", { + "is-selected": isSelected2 + }), + "aria-selected": isSelected2, + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), + showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ), + showTitle && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + Stack, + { + direction: "row", + justify: "space-between", + className: "dataviews-view-picker-grid__title-actions", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Stack, { direction: "column", gap: "xs", children: [ + showDescription && descriptionField?.render && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + descriptionField.render, + { + item, + field: descriptionField + } + ), + !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + Stack, + { + direction: "row", + className: "dataviews-view-picker-grid__badge-fields", + gap: "sm", + wrap: "wrap", + align: "top", + justify: "flex-start", + children: badgeFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + Badge2, + { + className: "dataviews-view-picker-grid__field-value", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + field.render, + { + item, + field + } + ) + }, + field.id + ); + }) + } + ), + !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-picker-grid__fields", + gap: "xs", + children: regularFields.map((field) => { + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components15.Flex, + { + className: "dataviews-view-picker-grid__field", + gap: 1, + justify: "flex-start", + expanded: true, + style: { height: "auto" }, + direction: "row", + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components15.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components15.FlexItem, + { + className: "dataviews-view-picker-grid__field-value", + style: { maxHeight: "none" }, + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + field.render, + { + item, + field + } + ) + } + ) + ] }) + }, + field.id + ); + }) + } + ) + ] }) + ] + }, + id + ); +} +function GridGroup({ + groupName, + groupField, + showLabel = true, + children +}) { + const headerId = (0, import_compose7.useInstanceId)( + GridGroup, + "dataviews-view-picker-grid-group__header" + ); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)( + Stack, + { + direction: "column", + gap: "sm", + role: "group", + "aria-labelledby": headerId, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "h3", + { + className: "dataviews-view-picker-grid-group__header", + id: headerId, + children: showLabel ? (0, import_i18n17.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n17.__)("%1$s: %2$s"), + groupField.label, + groupName + ) : groupName + } + ), + children + ] + }, + groupName + ); +} +function ViewPickerGrid({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading, + onChangeSelection, + selection, + view, + className, + empty +}) { + const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element19.useContext)(dataviews_context_default); + const titleField = fields.find( + (field) => field.id === view?.titleField + ); + const mediaField = fields.find( + (field) => field.id === view?.mediaField + ); + const descriptionField = fields.find( + (field) => field.id === view?.descriptionField + ); + const otherFields = view.fields ?? []; + const { regularFields, badgeFields } = otherFields.reduce( + (accumulator, fieldId) => { + const field = fields.find((f2) => f2.id === fieldId); + if (!field) { + return accumulator; + } + const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; + accumulator[key].push(field); + return accumulator; + }, + { regularFields: [], badgeFields: [] } + ); + const hasData = !!data?.length; + const usedPreviewSize = view.layout?.previewSize; + const isMultiselect = useIsMultiselectPicker(actions); + const size = "900px"; + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + const currentPage = view?.page ?? 1; + const perPage = view?.perPage ?? 0; + const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { + // Render multiple groups. + children: [ + hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components15.Composite, + { + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + "aria-label": itemListLabel, + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + Stack, + { + direction: "column", + gap: "lg", + children, + ...props + } + ), + children: Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + GridGroup, + { + groupName, + groupField, + showLabel: view.groupBy?.showLabel !== false, + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + GridItems, + { + previewSize: usedPreviewSize, + style: { + gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` + }, + "aria-busy": isLoading, + ref: resizeObserverRef, + children: groupItems.map((item) => { + const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset: posInSet, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ) + }, + groupName + ) + ) + } + ), + // Render a single grid with all data. + hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components15.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + GridItems, + { + className: clsx_default( + "dataviews-view-picker-grid", + className + ), + previewSize: usedPreviewSize, + "aria-busy": isLoading, + ref: resizeObserverRef + } + ), + virtualFocus: true, + orientation: "horizontal", + role: "listbox", + "aria-multiselectable": isMultiselect, + "aria-label": itemListLabel, + children: data.map((item, index) => { + let posinset = isInfiniteScroll ? index + 1 : void 0; + if (!isInfiniteScroll) { + posinset = (currentPage - 1) * perPage + index + 1; + } + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + GridItem3, + { + view, + multiselect: isMultiselect, + selection, + onChangeSelection, + getItemId: getItemId2, + item, + mediaField, + titleField, + descriptionField, + regularFields, + badgeFields, + config: { + sizes: size + }, + posinset, + setsize: setSize + }, + getItemId2(item) + ); + }) + } + ), + // Render empty state. + !hasData && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !isLoading + }), + children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components15.Spinner, {}) }) : empty + } + ), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components15.Spinner, {}) }) + ] + }); +} +var picker_grid_default = ViewPickerGrid; + +// packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs +var import_i18n18 = __toESM(require_i18n(), 1); +var import_components16 = __toESM(require_components(), 1); +var import_element20 = __toESM(require_element(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +function TableColumnField2({ + item, + fields, + column, + align +}) { + const field = fields.find((f2) => f2.id === column); + if (!field) { + return null; + } + const className = clsx_default("dataviews-view-table__cell-content-wrapper", { + "dataviews-view-table__cell-align-end": align === "end", + "dataviews-view-table__cell-align-center": align === "center" + }); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(field.render, { item, field }) }); +} +function TableRow2({ + item, + fields, + id, + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect, + posinset +}) { + const { paginationInfo } = (0, import_element20.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element20.useState)(false); + const { + showTitle = true, + showMedia = true, + showDescription = true, + infiniteScrollEnabled + } = view; + const handleMouseEnter = () => { + setIsHovered(true); + }; + const handleMouseLeave = () => { + setIsHovered(false); + }; + const columns = view.fields ?? []; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)( + import_components16.Composite.Item, + { + render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "tr", + { + className: clsx_default("dataviews-view-table__row", { + "is-selected": isSelected2, + "is-hovered": isHovered + }), + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, + children, + ...props + } + ), + "aria-selected": isSelected2, + "aria-setsize": paginationInfo.totalItems || void 0, + "aria-posinset": posinset, + role: infiniteScrollEnabled ? "article" : "option", + onClick: () => { + if (isSelected2) { + onChangeSelection( + selection.filter((itemId) => id !== itemId) + ); + } else { + const newSelection = multiselect ? [...selection, id] : [id]; + onChangeSelection(newSelection); + } + }, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "td", + { + className: "dataviews-view-table__checkbox-column", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + DataViewsSelectionCheckbox, + { + item, + selection, + onChangeSelection, + getItemId: getItemId2, + titleField, + disabled: false, + "aria-hidden": true, + tabIndex: -1 + } + ) }) + } + ), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + column_primary_default, + { + item, + titleField: showTitle ? titleField : void 0, + mediaField: showMedia ? mediaField : void 0, + descriptionField: showDescription ? descriptionField : void 0, + isItemClickable: () => false + } + ) }), + columns.map((column) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + TableColumnField2, + { + fields, + item, + column, + align + } + ) + }, + column + ); + }) + ] + }, + id + ); +} +function ViewPickerTable({ + actions, + data, + fields, + getItemId: getItemId2, + isLoading = false, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + view, + className, + empty +}) { + const headerMenuRefs = (0, import_element20.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element20.useRef)(); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element20.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element20.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element20.useId)(); + if (nextHeaderMenuToFocus) { + headerMenuToFocusRef.current = nextHeaderMenuToFocus; + setNextHeaderMenuToFocus(void 0); + return; + } + const onHide = (field) => { + const hidden = headerMenuRefs.current.get(field.id); + const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; + setNextHeaderMenuToFocus(fallback?.node); + }; + const hasData = !!data?.length; + const titleField = fields.find((field) => field.id === view.titleField); + const mediaField = fields.find((field) => field.id === view.mediaField); + const descriptionField = fields.find( + (field) => field.id === view.descriptionField + ); + const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; + const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; + const { showTitle = true, showMedia = true, showDescription = true } = view; + const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription; + const columns = view.fields ?? []; + const headerMenuRef = (column, index) => (node) => { + if (node) { + headerMenuRefs.current.set(column, { + node, + fallback: columns[index > 0 ? index - 1 : 1] + }); + } else { + headerMenuRefs.current.delete(column); + } + }; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_jsx_runtime48.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)( + "table", + { + className: clsx_default( + "dataviews-view-table", + "dataviews-view-picker-table", + className, + { + [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( + view.layout.density + ) + } + ), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : "listbox", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)( + "tr", + { + className: "dataviews-view-table__row", + role: "presentation", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + BulkSelectionCheckbox, + { + selection, + onChangeSelection, + data, + actions, + getItemId: getItemId2 + } + ) }), + hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + column_header_menu_default, + { + ref: headerMenuRef( + titleField.id, + 0 + ), + fieldId: titleField.id, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: false + } + ) }), + columns.map((column, index) => { + const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: align + }, + "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, + scope: "col", + children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + column_header_menu_default, + { + ref: headerMenuRef(column, index), + fieldId: column, + view, + fields, + onChangeView, + onHide, + setOpenedFilter, + canMove: view.layout?.enableMoving ?? true + } + ) + }, + column + ); + }) + ] + } + ) }), + hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( + ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)( + import_components16.Composite, + { + virtualFocus: true, + orientation: "vertical", + render: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tbody", { role: "group" }), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "tr", + { + className: "dataviews-view-table__group-header-row", + role: "presentation", + children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + "td", + { + colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, + className: "dataviews-view-table__group-header-cell", + role: "presentation", + children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n18.sprintf)( + // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". + (0, import_i18n18.__)("%1$s: %2$s"), + groupField.label, + groupName + ) + } + ) + } + ), + groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect + }, + getItemId2(item) + )) + ] + }, + `group-${groupName}` + ) + ) : /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + import_components16.Composite, + { + render: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tbody", { role: "presentation" }), + virtualFocus: true, + orientation: "vertical", + children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + TableRow2, + { + item, + fields, + id: getItemId2(item) || index.toString(), + view, + titleField, + mediaField, + descriptionField, + selection, + getItemId: getItemId2, + onChangeSelection, + multiselect: isMultiselect, + posinset: index + 1 + }, + getItemId2(item) + )) + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)( + "div", + { + className: clsx_default({ + "dataviews-loading": isLoading, + "dataviews-no-results": !hasData && !isLoading + }), + id: tableNoticeId, + children: [ + !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_components16.Spinner, {}) }) : empty), + hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_components16.Spinner, {}) }) + ] + } + ) + ] }); +} +var picker_table_default = ViewPickerTable; + +// packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs +var import_components17 = __toESM(require_components(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); +var import_element21 = __toESM(require_element(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var imageSizes2 = [ + { + value: 120, + breakpoint: 1 + }, + { + value: 170, + breakpoint: 1 + }, + { + value: 230, + breakpoint: 1 + }, + { + value: 290, + breakpoint: 1112 + // at minimum image width, 4 images display at this container size + }, + { + value: 350, + breakpoint: 1636 + // at minimum image width, 6 images display at this container size + }, + { + value: 430, + breakpoint: 588 + // at minimum image width, 2 images display at this container size + } +]; +function PreviewSizePicker() { + const context = (0, import_element21.useContext)(dataviews_context_default); + const view = context.view; + const breakValues = imageSizes2.filter((size) => { + return context.containerWidth >= size.breakpoint; + }); + const layoutPreviewSize = view.layout?.previewSize ?? 230; + const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; + const marks = breakValues.map((size, index) => { + return { + value: index + }; + }); + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components17.RangeControl, + { + __next40pxDefaultSize: true, + showTooltip: false, + label: (0, import_i18n19.__)("Preview size"), + value: previewSizeToUse, + min: 0, + max: breakValues.length - 1, + withInputField: false, + onChange: (value = 0) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + previewSize: breakValues[value].value + } + }); + }, + step: 1, + marks + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs +var import_components18 = __toESM(require_components(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element22.useContext)(dataviews_context_default); + const view = context.view; + return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)( + import_components18.__experimentalToggleGroupControl, + { + size: "__unstable-large", + label: (0, import_i18n20.__)("Density"), + value: view.layout?.density || "balanced", + onChange: (value) => { + context.onChangeView({ + ...view, + layout: { + ...view.layout, + density: value + } + }); + }, + isBlock: true, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "comfortable", + label: (0, import_i18n20._x)( + "Comfortable", + "Density option for DataView layout" + ) + }, + "comfortable" + ), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "balanced", + label: (0, import_i18n20._x)("Balanced", "Density option for DataView layout") + }, + "balanced" + ), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + import_components18.__experimentalToggleGroupControlOption, + { + value: "compact", + label: (0, import_i18n20._x)("Compact", "Density option for DataView layout") + }, + "compact" + ) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-layouts/index.mjs +var VIEW_LAYOUTS = [ + { + type: LAYOUT_TABLE, + label: (0, import_i18n21.__)("Table"), + component: table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_GRID, + label: (0, import_i18n21.__)("Grid"), + component: grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker + }, + { + type: LAYOUT_LIST, + label: (0, import_i18n21.__)("List"), + component: ViewList, + icon: (0, import_i18n21.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_ACTIVITY, + label: (0, import_i18n21.__)("Activity"), + component: ViewActivity, + icon: scheduled_default, + viewConfigOptions: DensityPicker + }, + { + type: LAYOUT_PICKER_GRID, + label: (0, import_i18n21.__)("Grid"), + component: picker_grid_default, + icon: category_default, + viewConfigOptions: PreviewSizePicker, + isPicker: true + }, + { + type: LAYOUT_PICKER_TABLE, + label: (0, import_i18n21.__)("Table"), + component: picker_table_default, + icon: block_table_default, + viewConfigOptions: DensityPicker, + isPicker: true + } +]; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_element30 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_components21 = __toESM(require_components(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); +var import_element27 = __toESM(require_element(), 1); + +// node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp2.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b2)) { + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js +var __defProp3 = Object.defineProperty; +var __defProps2 = Object.defineProperties; +var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __hasOwnProp3 = Object.prototype.hasOwnProperty; +var __propIsEnum2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues2 = (a2, b2) => { + for (var prop in b2 || (b2 = {})) + if (__hasOwnProp3.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + if (__getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(b2)) { + if (__propIsEnum2.call(b2, prop)) + __defNormalProp2(a2, prop, b2[prop]); + } + return a2; +}; +var __spreadProps2 = (a2, b2) => __defProps2(a2, __getOwnPropDescs2(b2)); +var __objRest2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols2) + for (var prop of __getOwnPropSymbols2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +// node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js +function noop(..._) { +} +function applyState(argument, currentValue) { + if (isUpdater(argument)) { + const value = isLazyValue(currentValue) ? currentValue() : currentValue; + return argument(value); + } + return argument; +} +function isUpdater(argument) { + return typeof argument === "function"; +} +function isLazyValue(value) { + return typeof value === "function"; +} +function hasOwnProperty(object, prop) { + if (typeof Object.hasOwn === "function") { + return Object.hasOwn(object, prop); + } + return Object.prototype.hasOwnProperty.call(object, prop); +} +function chain(...fns) { + return (...args) => { + for (const fn of fns) { + if (typeof fn === "function") { + fn(...args); + } + } + }; +} +function normalizeString(str) { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); +} +function omit2(object, keys) { + const result = __spreadValues2({}, object); + for (const key of keys) { + if (hasOwnProperty(result, key)) { + delete result[key]; + } + } + return result; +} +function pick(object, paths) { + const result = {}; + for (const key of paths) { + if (hasOwnProperty(object, key)) { + result[key] = object[key]; + } + } + return result; +} +function identity(value) { + return value; +} +function invariant(condition, message2) { + if (condition) return; + if (typeof message2 !== "string") throw new Error("Invariant failed"); + throw new Error(message2); +} +function getKeys(obj) { + return Object.keys(obj); +} +function isFalsyBooleanCallback(booleanOrCallback, ...args) { + const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; + if (result == null) return false; + return !result; +} +function disabledFromProps(props) { + return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; +} +function removeUndefinedValues(obj) { + const result = {}; + for (const key in obj) { + if (obj[key] !== void 0) { + result[key] = obj[key]; + } + } + return result; +} +function defaultValue(...values) { + for (const value of values) { + if (value !== void 0) return value; + } + return void 0; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js +var import_react4 = __toESM(require_react(), 1); +function setRef(ref, value) { + if (typeof ref === "function") { + ref(value); + } else if (ref) { + ref.current = value; + } +} +function isValidElementWithRef(element) { + if (!element) return false; + if (!(0, import_react4.isValidElement)(element)) return false; + if ("ref" in element.props) return true; + if ("ref" in element) return true; + return false; +} +function getRefProperty(element) { + if (!isValidElementWithRef(element)) return null; + const props = __spreadValues({}, element.props); + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = __spreadValues({}, base); + for (const key in overrides) { + if (!hasOwnProperty(overrides, key)) continue; + if (key === "className") { + const prop = "className"; + props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; + continue; + } + if (key === "style") { + const prop = "style"; + props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; + continue; + } + const overrideValue = overrides[key]; + if (typeof overrideValue === "function" && key.startsWith("on")) { + const baseValue = base[key]; + if (typeof baseValue === "function") { + props[key] = (...args) => { + overrideValue(...args); + baseValue(...args); + }; + continue; + } + } + props[key] = overrideValue; + } + return props; +} + +// node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js +var canUseDOM = checkIsBrowser(); +function checkIsBrowser() { + var _a; + return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); +} +function getDocument(node) { + if (!node) return document; + if ("self" in node) return node.document; + return node.ownerDocument || document; +} +function getActiveElement(node, activeDescendant = false) { + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && activeElement.contentDocument) { + return getActiveElement( + activeElement.contentDocument.body, + activeDescendant + ); + } + if (activeDescendant) { + const id = activeElement.getAttribute("aria-activedescendant"); + if (id) { + const element = getDocument(activeElement).getElementById(id); + if (element) { + return element; + } + } + } + return activeElement; +} +function contains(parent, child) { + return parent === child || parent.contains(child); +} +function isFrame(element) { + return element.tagName === "IFRAME"; +} +function isButton(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "button") return true; + if (tagName === "input" && element.type) { + return buttonInputTypes.indexOf(element.type) !== -1; + } + return false; +} +var buttonInputTypes = [ + "button", + "color", + "file", + "image", + "reset", + "submit" +]; +function isVisible(element) { + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + const htmlElement = element; + return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; +} +function isTextField(element) { + try { + const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; + const isTextArea = element.tagName === "TEXTAREA"; + return isTextInput || isTextArea || false; + } catch (error) { + return false; + } +} +function isTextbox(element) { + return element.isContentEditable || isTextField(element); +} +function getTextboxValue(element) { + if (isTextField(element)) { + return element.value; + } + if (element.isContentEditable) { + const range = getDocument(element).createRange(); + range.selectNodeContents(element); + return range.toString(); + } + return ""; +} +function getTextboxSelection(element) { + let start = 0; + let end = 0; + if (isTextField(element)) { + start = element.selectionStart || 0; + end = element.selectionEnd || 0; + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { + const range = selection.getRangeAt(0); + const nextRange = range.cloneRange(); + nextRange.selectNodeContents(element); + nextRange.setEnd(range.startContainer, range.startOffset); + start = nextRange.toString().length; + nextRange.setEnd(range.endContainer, range.endOffset); + end = nextRange.toString().length; + } + } + return { start, end }; +} +function getPopupRole(element, fallback) { + const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; + const role = element == null ? void 0 : element.getAttribute("role"); + if (role && allowedPopupRoles.indexOf(role) !== -1) { + return role; + } + return fallback; +} +function getScrollingElement(element) { + if (!element) return null; + const isScrollableOverflow = (overflow) => { + if (overflow === "auto") return true; + if (overflow === "scroll") return true; + return false; + }; + if (element.clientHeight && element.scrollHeight > element.clientHeight) { + const { overflowY } = getComputedStyle(element); + if (isScrollableOverflow(overflowY)) return element; + } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { + const { overflowX } = getComputedStyle(element); + if (isScrollableOverflow(overflowX)) return element; + } + return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; +} +function setSelectionRange(element, ...args) { + if (/text|search|password|tel|url/i.test(element.type)) { + element.setSelectionRange(...args); + } +} +function sortBasedOnDOMPosition(items, getElement) { + const pairs = items.map((item, index) => [index, item]); + let isOrderDifferent = false; + pairs.sort(([indexA, a2], [indexB, b2]) => { + const elementA = getElement(a2); + const elementB = getElement(b2); + if (elementA === elementB) return 0; + if (!elementA || !elementB) return 0; + if (isElementPreceding(elementA, elementB)) { + if (indexA > indexB) { + isOrderDifferent = true; + } + return -1; + } + if (indexA < indexB) { + isOrderDifferent = true; + } + return 1; + }); + if (isOrderDifferent) { + return pairs.map(([_, item]) => item); + } + return items; +} +function isElementPreceding(a2, b2) { + return Boolean( + b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING + ); +} + +// node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js +function isTouchDevice() { + return canUseDOM && !!navigator.maxTouchPoints; +} +function isApple() { + if (!canUseDOM) return false; + return /mac|iphone|ipad|ipod/i.test(navigator.platform); +} +function isSafari() { + return canUseDOM && isApple() && /apple/i.test(navigator.vendor); +} +function isFirefox() { + return canUseDOM && /firefox\//i.test(navigator.userAgent); +} + +// node_modules/@ariakit/core/esm/utils/events.js +function isPortalEvent(event) { + return Boolean( + event.currentTarget && !contains(event.currentTarget, event.target) + ); +} +function isSelfTarget(event) { + return event.target === event.currentTarget; +} +function isOpeningInNewTab(event) { + const element = event.currentTarget; + if (!element) return false; + const isAppleDevice = isApple(); + if (isAppleDevice && !event.metaKey) return false; + if (!isAppleDevice && !event.ctrlKey) return false; + const tagName = element.tagName.toLowerCase(); + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function isDownloading(event) { + const element = event.currentTarget; + if (!element) return false; + const tagName = element.tagName.toLowerCase(); + if (!event.altKey) return false; + if (tagName === "a") return true; + if (tagName === "button" && element.type === "submit") return true; + if (tagName === "input" && element.type === "submit") return true; + return false; +} +function fireBlurEvent(element, eventInit) { + const event = new FocusEvent("blur", eventInit); + const defaultAllowed = element.dispatchEvent(event); + const bubbleInit = __spreadProps2(__spreadValues2({}, eventInit), { bubbles: true }); + element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); + return defaultAllowed; +} +function fireKeyboardEvent(element, type, eventInit) { + const event = new KeyboardEvent(type, eventInit); + return element.dispatchEvent(event); +} +function fireClickEvent(element, eventInit) { + const event = new MouseEvent("click", eventInit); + return element.dispatchEvent(event); +} +function isFocusEventOutside(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function queueBeforeEvent(element, type, callback, timeout) { + const createTimer = (callback2) => { + if (timeout) { + const timerId2 = setTimeout(callback2, timeout); + return () => clearTimeout(timerId2); + } + const timerId = requestAnimationFrame(callback2); + return () => cancelAnimationFrame(timerId); + }; + const cancelTimer = createTimer(() => { + element.removeEventListener(type, callSync, true); + callback(); + }); + const callSync = () => { + cancelTimer(); + callback(); + }; + element.addEventListener(type, callSync, { once: true, capture: true }); + return cancelTimer; +} +function addGlobalEventListener(type, listener, options, scope = window) { + const children = []; + try { + scope.document.addEventListener(type, listener, options); + for (const frame of Array.from(scope.frames)) { + children.push(addGlobalEventListener(type, listener, options, frame)); + } + } catch (e2) { + } + const removeEventListener = () => { + try { + scope.document.removeEventListener(type, listener, options); + } catch (e2) { + } + for (const remove of children) { + remove(); + } + }; + return removeEventListener; +} + +// node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js +var import_react5 = __toESM(require_react(), 1); +var React6 = __toESM(require_react(), 1); +var _React = __spreadValues({}, React6); +var useReactId = _React.useId; +var useReactDeferredValue = _React.useDeferredValue; +var useReactInsertionEffect = _React.useInsertionEffect; +var useSafeLayoutEffect = canUseDOM ? import_react5.useLayoutEffect : import_react5.useEffect; +function useInitialValue(value) { + const [initialValue] = (0, import_react5.useState)(value); + return initialValue; +} +function useLiveRef(value) { + const ref = (0, import_react5.useRef)(value); + useSafeLayoutEffect(() => { + ref.current = value; + }); + return ref; +} +function useEvent(callback) { + const ref = (0, import_react5.useRef)(() => { + throw new Error("Cannot call an event handler while rendering."); + }); + if (useReactInsertionEffect) { + useReactInsertionEffect(() => { + ref.current = callback; + }); + } else { + ref.current = callback; + } + return (0, import_react5.useCallback)((...args) => { + var _a; + return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); + }, []); +} +function useTransactionState(callback) { + const [state, setState] = (0, import_react5.useState)(null); + useSafeLayoutEffect(() => { + if (state == null) return; + if (!callback) return; + let prevState = null; + callback((prev) => { + prevState = prev; + return state; + }); + return () => { + callback(prevState); + }; + }, [state, callback]); + return [state, setState]; +} +function useMergeRefs(...refs) { + return (0, import_react5.useMemo)(() => { + if (!refs.some(Boolean)) return; + return (value) => { + for (const ref of refs) { + setRef(ref, value); + } + }; + }, refs); +} +function useId3(defaultId) { + if (useReactId) { + const reactId = useReactId(); + if (defaultId) return defaultId; + return reactId; + } + const [id, setId] = (0, import_react5.useState)(defaultId); + useSafeLayoutEffect(() => { + if (defaultId || id) return; + const random = Math.random().toString(36).slice(2, 8); + setId(`id-${random}`); + }, [defaultId, id]); + return defaultId || id; +} +function useTagName(refOrElement, type) { + const stringOrUndefined = (type2) => { + if (typeof type2 !== "string") return; + return type2; + }; + const [tagName, setTagName] = (0, import_react5.useState)(() => stringOrUndefined(type)); + useSafeLayoutEffect(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); + }, [refOrElement, type]); + return tagName; +} +function useAttribute(refOrElement, attributeName, defaultValue2) { + const initialValue = useInitialValue(defaultValue2); + const [attribute, setAttribute] = (0, import_react5.useState)(initialValue); + (0, import_react5.useEffect)(() => { + const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; + if (!element) return; + const callback = () => { + const value = element.getAttribute(attributeName); + setAttribute(value == null ? initialValue : value); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { attributeFilter: [attributeName] }); + callback(); + return () => observer.disconnect(); + }, [refOrElement, attributeName, initialValue]); + return attribute; +} +function useUpdateEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + (0, import_react5.useEffect)(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + (0, import_react5.useEffect)( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useUpdateLayoutEffect(effect, deps) { + const mounted = (0, import_react5.useRef)(false); + useSafeLayoutEffect(() => { + if (mounted.current) { + return effect(); + } + mounted.current = true; + }, deps); + useSafeLayoutEffect( + () => () => { + mounted.current = false; + }, + [] + ); +} +function useForceUpdate() { + return (0, import_react5.useReducer)(() => [], []); +} +function useBooleanEvent(booleanOrCallback) { + return useEvent( + typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback + ); +} +function useWrapElement(props, callback, deps = []) { + const wrapElement = (0, import_react5.useCallback)( + (element) => { + if (props.wrapElement) { + element = props.wrapElement(element); + } + return callback(element); + }, + [...deps, props.wrapElement] + ); + return __spreadProps(__spreadValues({}, props), { wrapElement }); +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, __spreadProps(__spreadValues({}, parent), { [key]: value })); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + }, []); + const isMouseMoving = useEvent(() => mouseMoving); + return isMouseMoving; +} +var mouseMoving = false; +var previousScreenX = 0; +var previousScreenY = 0; +function hasMouseMovement(event) { + const movementX = event.movementX || event.screenX - previousScreenX; + const movementY = event.movementY || event.screenY - previousScreenY; + previousScreenX = event.screenX; + previousScreenY = event.screenY; + return movementX || movementY || false; +} +function setMouseMoving(event) { + if (!hasMouseMovement(event)) return; + mouseMoving = true; +} +function resetMouseMoving() { + mouseMoving = false; +} + +// node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef((props, ref) => render4(__spreadProps(__spreadValues({}, props), { ref }))); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const _a = props, { wrapElement, render: render4 } = _a, rest = __objRest(_a, ["wrapElement", "render"]); + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = __spreadProps(__spreadValues({}, render4.props), { ref: mergedRef }); + element = React7.cloneElement(render4, mergeProps2(rest, renderProps)); + } else if (render4) { + element = render4(rest); + } else { + element = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Type, __spreadValues({}, rest)); + } + if (wrapElement) { + return wrapElement(element); + } + return element; +} +function createHook(useProps) { + const useRole = (props = {}) => { + return useProps(props); + }; + useRole.displayName = useProps.name; + return useRole; +} +function createStoreContext(providers = [], scopedProviders = []) { + const context = React7.createContext(void 0); + const scopedContext = React7.createContext(void 0); + const useContext28 = () => React7.useContext(context); + const useScopedContext = (onlyScoped = false) => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (onlyScoped) return scoped; + return scoped || store; + }; + const useProviderContext = () => { + const scoped = React7.useContext(scopedContext); + const store = useContext28(); + if (scoped && scoped === store) return; + return store; + }; + const ContextProvider = (props) => { + return providers.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(context.Provider, __spreadValues({}, props)) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Provider, __spreadProps(__spreadValues({}, props), { children })), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(scopedContext.Provider, __spreadValues({}, props)) + ) })); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js +var ctx = createStoreContext(); +var useCollectionContext = ctx.useContext; +var useCollectionScopedContext = ctx.useScopedContext; +var useCollectionProviderContext = ctx.useProviderContext; +var CollectionContextProvider = ctx.ContextProvider; +var CollectionScopedContextProvider = ctx.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js +var import_react6 = __toESM(require_react(), 1); +var ctx2 = createStoreContext( + [CollectionContextProvider], + [CollectionScopedContextProvider] +); +var useCompositeContext = ctx2.useContext; +var useCompositeScopedContext = ctx2.useScopedContext; +var useCompositeProviderContext = ctx2.useProviderContext; +var CompositeContextProvider = ctx2.ContextProvider; +var CompositeScopedContextProvider = ctx2.ScopedContextProvider; +var CompositeItemContext = (0, import_react6.createContext)( + void 0 +); +var CompositeRowContext = (0, import_react6.createContext)( + void 0 +); + +// node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js +var import_react7 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react7.createContext)(null); +var TagRemoveIdContext = (0, import_react7.createContext)( + null +); +var ctx3 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx3.useContext; +var useTagScopedContext = ctx3.useScopedContext; +var useTagProviderContext = ctx3.useProviderContext; +var TagContextProvider = ctx3.ContextProvider; +var TagScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js +function getInternal(store, key) { + const internals = store.__unstableInternals; + invariant(internals, "Invalid store"); + return internals[key]; +} +function createStore(initialState, ...stores) { + let state = initialState; + let prevStateBatch = state; + let lastUpdate = /* @__PURE__ */ Symbol(); + let destroy = noop; + const instances = /* @__PURE__ */ new Set(); + const updatedKeys = /* @__PURE__ */ new Set(); + const setups = /* @__PURE__ */ new Set(); + const listeners = /* @__PURE__ */ new Set(); + const batchListeners = /* @__PURE__ */ new Set(); + const disposables = /* @__PURE__ */ new WeakMap(); + const listenerKeys = /* @__PURE__ */ new WeakMap(); + const storeSetup = (callback) => { + setups.add(callback); + return () => setups.delete(callback); + }; + const storeInit = () => { + const initialized = instances.size; + const instance = /* @__PURE__ */ Symbol(); + instances.add(instance); + const maybeDestroy = () => { + instances.delete(instance); + if (instances.size) return; + destroy(); + }; + if (initialized) return maybeDestroy; + const desyncs = getKeys(state).map( + (key) => chain( + ...stores.map((store) => { + var _a; + const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); + if (!storeState) return; + if (!hasOwnProperty(storeState, key)) return; + return sync(store, [key], (state2) => { + setState( + key, + state2[key], + // @ts-expect-error - Not public API. This is just to prevent + // infinite loops. + true + ); + }); + }) + ) + ); + const teardowns = []; + for (const setup2 of setups) { + teardowns.push(setup2()); + } + const cleanups = stores.map(init); + destroy = chain(...desyncs, ...teardowns, ...cleanups); + return maybeDestroy; + }; + const sub = (keys, listener, set = listeners) => { + set.add(listener); + listenerKeys.set(listener, keys); + return () => { + var _a; + (_a = disposables.get(listener)) == null ? void 0 : _a(); + disposables.delete(listener); + listenerKeys.delete(listener); + set.delete(listener); + }; + }; + const storeSubscribe = (keys, listener) => sub(keys, listener); + const storeSync = (keys, listener) => { + disposables.set(listener, listener(state, state)); + return sub(keys, listener); + }; + const storeBatch = (keys, listener) => { + disposables.set(listener, listener(state, prevStateBatch)); + return sub(keys, listener, batchListeners); + }; + const storePick = (keys) => createStore(pick(state, keys), finalStore); + const storeOmit = (keys) => createStore(omit2(state, keys), finalStore); + const getState = () => state; + const setState = (key, value, fromStores = false) => { + var _a; + if (!hasOwnProperty(state, key)) return; + const nextValue = applyState(value, state[key]); + if (nextValue === state[key]) return; + if (!fromStores) { + for (const store of stores) { + (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); + } + } + const prevState = state; + state = __spreadProps2(__spreadValues2({}, state), { [key]: nextValue }); + const thisUpdate = /* @__PURE__ */ Symbol(); + lastUpdate = thisUpdate; + updatedKeys.add(key); + const run = (listener, prev, uKeys) => { + var _a2; + const keys = listenerKeys.get(listener); + const updated = (k) => uKeys ? uKeys.has(k) : k === key; + if (!keys || keys.some(updated)) { + (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); + disposables.set(listener, listener(state, prev)); + } + }; + for (const listener of listeners) { + run(listener, prevState); + } + queueMicrotask(() => { + if (lastUpdate !== thisUpdate) return; + const snapshot = state; + for (const listener of batchListeners) { + run(listener, prevStateBatch, updatedKeys); + } + prevStateBatch = snapshot; + updatedKeys.clear(); + }); + }; + const finalStore = { + getState, + setState, + __unstableInternals: { + setup: storeSetup, + init: storeInit, + subscribe: storeSubscribe, + sync: storeSync, + batch: storeBatch, + pick: storePick, + omit: storeOmit + } + }; + return finalStore; +} +function setup(store, ...args) { + if (!store) return; + return getInternal(store, "setup")(...args); +} +function init(store, ...args) { + if (!store) return; + return getInternal(store, "init")(...args); +} +function subscribe(store, ...args) { + if (!store) return; + return getInternal(store, "subscribe")(...args); +} +function sync(store, ...args) { + if (!store) return; + return getInternal(store, "sync")(...args); +} +function batch(store, ...args) { + if (!store) return; + return getInternal(store, "batch")(...args); +} +function omit22(store, ...args) { + if (!store) return; + return getInternal(store, "omit")(...args); +} +function pick2(store, ...args) { + if (!store) return; + return getInternal(store, "pick")(...args); +} +function mergeStore(...stores) { + const initialState = stores.reduce((state, store2) => { + var _a; + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (!nextState) return state; + return Object.assign(state, nextState); + }, {}); + const store = createStore(initialState, ...stores); + return Object.assign({}, ...stores, store); +} +function throwOnConflictingProps(props, store) { + if (false) return; + if (!store) return; + const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { + var _a; + const stateKey = key.replace("default", ""); + return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; + }); + if (!defaultKeys.length) return; + const storeState = store.getState(); + const conflictingProps = defaultKeys.filter( + (key) => hasOwnProperty(storeState, key) + ); + if (!conflictingProps.length) return; + throw new Error( + `Passing a store prop in conjunction with a default state is not supported. + +const store = useSelectStore(); + + ^ ^ + +Instead, pass the default state to the topmost store: + +const store = useSelectStore({ defaultValue: "Apple" }); + + +See https://github.com/ariakit/ariakit/pull/2745 for more details. + +If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit +` + ); +} + +// node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js +var React8 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var { useSyncExternalStore } = import_shim.default; +var noopSubscribe = () => () => { +}; +function useStoreState(store, keyOrSelector = identity) { + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const key = typeof keyOrSelector === "string" ? keyOrSelector : null; + const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; + const state = store == null ? void 0 : store.getState(); + if (selector2) return selector2(state); + if (!state) return; + if (!key) return; + if (!hasOwnProperty(state, key)) return; + return state[key]; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreStateObject(store, object) { + const objRef = React8.useRef( + {} + ); + const storeSubscribe = React8.useCallback( + (callback) => { + if (!store) return noopSubscribe(); + return subscribe(store, null, callback); + }, + [store] + ); + const getSnapshot = () => { + const state = store == null ? void 0 : store.getState(); + let updated = false; + const obj = objRef.current; + for (const prop in object) { + const keyOrSelector = object[prop]; + if (typeof keyOrSelector === "function") { + const value = keyOrSelector(state); + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + if (typeof keyOrSelector === "string") { + if (!state) continue; + if (!hasOwnProperty(state, keyOrSelector)) continue; + const value = state[keyOrSelector]; + if (value !== obj[prop]) { + obj[prop] = value; + updated = true; + } + } + } + if (updated) { + objRef.current = __spreadValues({}, obj); + } + return objRef.current; + }; + return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); +} +function useStoreProps(store, props, key, setKey) { + const value = hasOwnProperty(props, key) ? props[key] : void 0; + const setValue = setKey ? props[setKey] : void 0; + const propsRef = useLiveRef({ value, setValue }); + useSafeLayoutEffect(() => { + return sync(store, [key], (state, prev) => { + const { value: value2, setValue: setValue2 } = propsRef.current; + if (!setValue2) return; + if (state[key] === prev[key]) return; + if (state[key] === value2) return; + setValue2(state[key]); + }); + }, [store, key]); + useSafeLayoutEffect(() => { + if (value === void 0) return; + store.setState(key, value); + return batch(store, [key], () => { + if (value === void 0) return; + store.setState(key, value); + }); + }); +} +function useStore(createStore2, props) { + const [store, setStore] = React8.useState(() => createStore2(props)); + useSafeLayoutEffect(() => init(store), [store]); + const useState24 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => __spreadProps(__spreadValues({}, store), { useState: useState24 }), + [store, useState24] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2(__spreadValues(__spreadValues({}, props), store2.getState()))); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js +function getCommonParent(items) { + var _a; + const firstItem = items.find((item) => !!item.element); + const lastItem = [...items].reverse().find((item) => !!item.element); + let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; + while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { + const parent = parentElement; + if (lastItem && parent.contains(lastItem.element)) { + return parentElement; + } + parentElement = parentElement.parentElement; + } + return getDocument(parentElement).body; +} +function getPrivateStore(store) { + return store == null ? void 0 : store.__unstablePrivateStore; +} +function createCollectionStore(props = {}) { + var _a; + throwOnConflictingProps(props, props.store); + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const items = defaultValue( + props.items, + syncState == null ? void 0 : syncState.items, + props.defaultItems, + [] + ); + const itemsMap = new Map(items.map((item) => [item.id, item])); + const initialState = { + items, + renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) + }; + const syncPrivateStore = getPrivateStore(props.store); + const privateStore = createStore( + { items, renderedItems: initialState.renderedItems }, + syncPrivateStore + ); + const collection = createStore(initialState, props.store); + const sortItems = (renderedItems) => { + const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); + privateStore.setState("renderedItems", sortedItems); + collection.setState("renderedItems", sortedItems); + }; + setup(collection, () => init(privateStore)); + setup(privateStore, () => { + return batch(privateStore, ["items"], (state) => { + collection.setState("items", state.items); + }); + }); + setup(privateStore, () => { + return batch(privateStore, ["renderedItems"], (state) => { + let firstRun = true; + let raf = requestAnimationFrame(() => { + const { renderedItems } = collection.getState(); + if (state.renderedItems === renderedItems) return; + sortItems(state.renderedItems); + }); + if (typeof IntersectionObserver !== "function") { + return () => cancelAnimationFrame(raf); + } + const ioCallback = () => { + if (firstRun) { + firstRun = false; + return; + } + cancelAnimationFrame(raf); + raf = requestAnimationFrame(() => sortItems(state.renderedItems)); + }; + const root = getCommonParent(state.renderedItems); + const observer = new IntersectionObserver(ioCallback, { root }); + for (const item of state.renderedItems) { + if (!item.element) continue; + observer.observe(item.element); + } + return () => { + cancelAnimationFrame(raf); + observer.disconnect(); + }; + }); + }); + const mergeItem = (item, setItems, canDeleteFromMap = false) => { + let prevItem; + setItems((items2) => { + const index = items2.findIndex(({ id }) => id === item.id); + const nextItems = items2.slice(); + if (index !== -1) { + prevItem = items2[index]; + const nextItem = __spreadValues2(__spreadValues2({}, prevItem), item); + nextItems[index] = nextItem; + itemsMap.set(item.id, nextItem); + } else { + nextItems.push(item); + itemsMap.set(item.id, item); + } + return nextItems; + }); + const unmergeItem = () => { + setItems((items2) => { + if (!prevItem) { + if (canDeleteFromMap) { + itemsMap.delete(item.id); + } + return items2.filter(({ id }) => id !== item.id); + } + const index = items2.findIndex(({ id }) => id === item.id); + if (index === -1) return items2; + const nextItems = items2.slice(); + nextItems[index] = prevItem; + itemsMap.set(item.id, prevItem); + return nextItems; + }); + }; + return unmergeItem; + }; + const registerItem = (item) => mergeItem( + item, + (getItems) => privateStore.setState("items", getItems), + true + ); + return __spreadProps2(__spreadValues2({}, collection), { + registerItem, + renderItem: (item) => chain( + registerItem(item), + mergeItem( + item, + (getItems) => privateStore.setState("renderedItems", getItems) + ) + ), + item: (id) => { + if (!id) return null; + let item = itemsMap.get(id); + if (!item) { + const { items: items2 } = privateStore.getState(); + item = items2.find((item2) => item2.id === id); + if (item) { + itemsMap.set(id, item); + } + } + return item || null; + }, + // @ts-expect-error Internal + __unstablePrivateStore: privateStore + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js +function toArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return typeof arg !== "undefined" ? [arg] : []; +} +function flatten2DArray(array) { + const flattened = []; + for (const row of array) { + flattened.push(...row); + } + return flattened; +} +function reverseArray(array) { + return array.slice().reverse(); +} + +// node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItems(items, excludeId) { + return items.filter((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getItemsInRow(items, rowId) { + return items.filter((item) => item.rowId === rowId); +} +function flipItems(items, activeId, shouldInsertNullItem = false) { + const index = items.findIndex((item) => item.id === activeId); + return [ + ...items.slice(index + 1), + ...shouldInsertNullItem ? [NULL_ITEM] : [], + ...items.slice(0, index) + ]; +} +function groupItemsByRows(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function getMaxRowLength(array) { + let maxLength = 0; + for (const { length } of array) { + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} +function createEmptyItem(rowId) { + return { + id: "__EMPTY_ITEM__", + disabled: true, + rowId + }; +} +function normalizeRows(rows, activeId, focusShift) { + const maxLength = getMaxRowLength(rows); + for (const row of rows) { + for (let i2 = 0; i2 < maxLength; i2 += 1) { + const item = row[i2]; + if (!item || focusShift && item.disabled) { + const isFirst = i2 === 0; + const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i2 - 1]; + row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); + } + } + } + return rows; +} +function verticalizeItems(items) { + const rows = groupItemsByRows(items); + const maxLength = getMaxRowLength(rows); + const verticalized = []; + for (let i2 = 0; i2 < maxLength; i2 += 1) { + for (const row of rows) { + const item = row[i2]; + if (item) { + verticalized.push(__spreadProps2(__spreadValues2({}, item), { + // If there's no rowId, it means that it's not a grid composite, but + // a single row instead. So, instead of verticalizing it, that is, + // assigning a different rowId based on the column index, we keep it + // undefined so they will be part of the same row. This is useful + // when using up/down on one-dimensional composites. + rowId: item.rowId ? `${i2}` : void 0 + })); + } + } + } + return verticalized; +} +function createCompositeStore(props = {}) { + var _a; + const syncState = (_a = props.store) == null ? void 0 : _a.getState(); + const collection = createCollectionStore(props); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId + ); + const initialState = __spreadProps2(__spreadValues2({}, collection.getState()), { + id: defaultValue( + props.id, + syncState == null ? void 0 : syncState.id, + `id-${Math.random().toString(36).slice(2, 8)}` + ), + activeId, + baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + activeId === null + ), + moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "both" + ), + rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + false + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), + focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) + }); + const composite = createStore(initialState, collection, props.store); + setup( + composite, + () => sync(composite, ["renderedItems", "activeId"], (state) => { + composite.setState("activeId", (activeId2) => { + var _a2; + if (activeId2 !== void 0) return activeId2; + return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; + }); + }) + ); + const getNextId = (direction = "next", options = {}) => { + var _a2, _b; + const defaultState = composite.getState(); + const { + skip = 0, + activeId: activeId2 = defaultState.activeId, + focusShift = defaultState.focusShift, + focusLoop = defaultState.focusLoop, + focusWrap = defaultState.focusWrap, + includesBaseElement = defaultState.includesBaseElement, + renderedItems = defaultState.renderedItems, + rtl = defaultState.rtl + } = options; + const isVerticalDirection = direction === "up" || direction === "down"; + const isNextDirection = direction === "next" || direction === "down"; + const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; + const canShift = focusShift && !skip; + let items = !isVerticalDirection ? renderedItems : flatten2DArray( + normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id; + } + const isGrid2 = items.some((item) => item.rowId); + const activeIndex = items.indexOf(activeItem); + const nextItems = items.slice(activeIndex + 1); + const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); + if (skip) { + const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); + const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. + nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; + return nextItem2 == null ? void 0 : nextItem2.id; + } + const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); + const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); + const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; + if (canLoop) { + const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); + const sortedItems = flipItems(loopItems, activeId2, hasNullItem); + const nextItem2 = findFirstEnabledItem(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem( + // We can use nextItems, which contains all the next items, including + // items from other rows, to wrap between rows. However, if there is a + // null item (the composite container), we'll only use the next items in + // the row. So moving next from the last item will focus on the + // composite container. On grid composites, horizontal navigation never + // focuses on the composite container, only vertical. + hasNullItem ? nextItemsInRow : nextItems, + activeId2 + ); + const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; + return nextId; + } + const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return __spreadProps2(__spreadValues2(__spreadValues2({}, collection), composite), { + setBaseElement: (element) => composite.setState("baseElement", element), + setActiveId: (id) => composite.setState("activeId", id), + move: (id) => { + if (id === void 0) return; + composite.setState("activeId", id); + composite.setState("moves", (moves) => moves + 1); + }, + first: () => { + var _a2; + return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; + }, + next: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("next", options); + }, + previous: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("previous", options); + }, + down: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("down", options); + }, + up: (options) => { + if (options !== void 0 && typeof options === "number") { + options = { skip: options }; + } + return getNextId("up", options); + } + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return __spreadValues({ id }, props); +} +function useCompositeStoreProps(store, update2, props) { + store = useCollectionStoreProps(store, update2, props); + useStoreProps(store, props, "activeId", "setActiveId"); + useStoreProps(store, props, "includesBaseElement"); + useStoreProps(store, props, "virtualFocus"); + useStoreProps(store, props, "orientation"); + useStoreProps(store, props, "rtl"); + useStoreProps(store, props, "focusLoop"); + useStoreProps(store, props, "focusWrap"); + useStoreProps(store, props, "focusShift"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js +function createDisclosureStore(props = {}) { + const store = mergeStore( + props.store, + omit22(props.disclosure, ["contentElement", "disclosureElement"]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const open = defaultValue( + props.open, + syncState == null ? void 0 : syncState.open, + props.defaultOpen, + false + ); + const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); + const initialState = { + open, + animated, + animating: !!animated && open, + mounted: open, + contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), + disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) + }; + const disclosure = createStore(initialState, store); + setup( + disclosure, + () => sync(disclosure, ["animated", "animating"], (state) => { + if (state.animated) return; + disclosure.setState("animating", false); + }) + ); + setup( + disclosure, + () => subscribe(disclosure, ["open"], () => { + if (!disclosure.getState().animated) return; + disclosure.setState("animating", true); + }) + ); + setup( + disclosure, + () => sync(disclosure, ["open", "animating"], (state) => { + disclosure.setState("mounted", state.open || state.animating); + }) + ); + return __spreadProps2(__spreadValues2({}, disclosure), { + disclosure: props.disclosure, + setOpen: (value) => disclosure.setState("open", value), + show: () => disclosure.setState("open", true), + hide: () => disclosure.setState("open", false), + toggle: () => disclosure.setState("open", (open2) => !open2), + stopAnimation: () => disclosure.setState("animating", false), + setContentElement: (value) => disclosure.setState("contentElement", value), + setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js +function useDisclosureStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store, props.disclosure]); + useStoreProps(store, props, "open", "setOpen"); + useStoreProps(store, props, "mounted", "setMounted"); + useStoreProps(store, props, "animated"); + return Object.assign(store, { disclosure: props.disclosure }); +} + +// node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js +function createPopoverStore(_a = {}) { + var _b = _a, { + popover: otherPopover + } = _b, props = __objRest2(_b, [ + "popover" + ]); + const store = mergeStore( + props.store, + omit22(otherPopover, [ + "arrowElement", + "anchorElement", + "contentElement", + "popoverElement", + "disclosureElement" + ]) + ); + throwOnConflictingProps(props, store); + const syncState = store == null ? void 0 : store.getState(); + const dialog = createDialogStore(__spreadProps2(__spreadValues2({}, props), { store })); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = __spreadProps2(__spreadValues2({}, dialog.getState()), { + placement, + currentPlacement: placement, + anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), + popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), + arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), + rendered: /* @__PURE__ */ Symbol("rendered") + }); + const popover = createStore(initialState, dialog, store); + return __spreadProps2(__spreadValues2(__spreadValues2({}, dialog), popover), { + setAnchorElement: (element) => popover.setState("anchorElement", element), + setPopoverElement: (element) => popover.setState("popoverElement", element), + setArrowElement: (element) => popover.setState("arrowElement", element), + render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore(_a = {}) { + var _b = _a, { + tag + } = _b, props = __objRest2(_b, [ + "tag" + ]); + const store = mergeStore(props.store, pick2(tag, ["value", "rtl"])); + throwOnConflictingProps(props, store); + const tagState = tag == null ? void 0 : tag.getState(); + const syncState = store == null ? void 0 : store.getState(); + const activeId = defaultValue( + props.activeId, + syncState == null ? void 0 : syncState.activeId, + props.defaultActiveId, + null + ); + const composite = createCompositeStore(__spreadProps2(__spreadValues2({}, props), { + activeId, + includesBaseElement: defaultValue( + props.includesBaseElement, + syncState == null ? void 0 : syncState.includesBaseElement, + true + ), + orientation: defaultValue( + props.orientation, + syncState == null ? void 0 : syncState.orientation, + "vertical" + ), + focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), + focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), + virtualFocus: defaultValue( + props.virtualFocus, + syncState == null ? void 0 : syncState.virtualFocus, + true + ) + })); + const popover = createPopoverStore(__spreadProps2(__spreadValues2({}, props), { + placement: defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom-start" + ) + })); + const value = defaultValue( + props.value, + syncState == null ? void 0 : syncState.value, + props.defaultValue, + "" + ); + const selectedValue = defaultValue( + props.selectedValue, + syncState == null ? void 0 : syncState.selectedValue, + tagState == null ? void 0 : tagState.values, + props.defaultSelectedValue, + "" + ); + const multiSelectable = Array.isArray(selectedValue); + const initialState = __spreadProps2(__spreadValues2(__spreadValues2({}, composite.getState()), popover.getState()), { + value, + selectedValue, + resetValueOnSelect: defaultValue( + props.resetValueOnSelect, + syncState == null ? void 0 : syncState.resetValueOnSelect, + multiSelectable + ), + resetValueOnHide: defaultValue( + props.resetValueOnHide, + syncState == null ? void 0 : syncState.resetValueOnHide, + multiSelectable && !tag + ), + activeValue: syncState == null ? void 0 : syncState.activeValue + }); + const combobox = createStore(initialState, composite, popover, store); + if (isTouchSafari) { + setup( + combobox, + () => sync(combobox, ["virtualFocus"], () => { + combobox.setState("virtualFocus", false); + }) + ); + } + setup(combobox, () => { + if (!tag) return; + return chain( + sync(combobox, ["selectedValue"], (state) => { + if (!Array.isArray(state.selectedValue)) return; + tag.setValues(state.selectedValue); + }), + sync(tag, ["values"], (state) => { + combobox.setState("selectedValue", state.values); + }) + ); + }); + setup( + combobox, + () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { + if (!state.resetValueOnHide) return; + if (state.mounted) return; + combobox.setState("value", value); + }) + ); + setup( + combobox, + () => sync(combobox, ["open"], (state) => { + if (state.open) return; + combobox.setState("activeId", activeId); + combobox.setState("moves", 0); + }) + ); + setup( + combobox, + () => sync(combobox, ["moves", "activeId"], (state, prevState) => { + if (state.moves === prevState.moves) { + combobox.setState("activeValue", void 0); + } + }) + ); + setup( + combobox, + () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { + if (state.moves === prev.moves) return; + const { activeId: activeId2 } = combobox.getState(); + const activeItem = composite.item(activeId2); + combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); + }) + ); + return __spreadProps2(__spreadValues2(__spreadValues2(__spreadValues2({}, popover), composite), combobox), { + tag, + setValue: (value2) => combobox.setState("value", value2), + resetValue: () => combobox.setState("value", initialState.value), + setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) + }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = __spreadProps(__spreadValues({}, props), { + tag: props.tag !== void 0 ? props.tag : tag + }); + return useCompositeStoreOptions(props); +} +function useComboboxStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.tag]); + useStoreProps(store, props, "value", "setValue"); + useStoreProps(store, props, "selectedValue", "setSelectedValue"); + useStoreProps(store, props, "resetValueOnHide"); + useStoreProps(store, props, "resetValueOnSelect"); + return Object.assign( + useCompositeStoreProps( + usePopoverStoreProps(store, update2, props), + update2, + props + ), + { tag: props.tag } + ); +} +function useComboboxStore(props = {}) { + props = useComboboxStoreOptions(props); + const [store, update2] = useStore(createComboboxStore, props); + return useComboboxStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js +var ctx4 = createStoreContext(); +var useDisclosureContext = ctx4.useContext; +var useDisclosureScopedContext = ctx4.useScopedContext; +var useDisclosureProviderContext = ctx4.useProviderContext; +var DisclosureContextProvider = ctx4.ContextProvider; +var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js +var import_react8 = __toESM(require_react(), 1); +var ctx5 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx5.useContext; +var useDialogScopedContext = ctx5.useScopedContext; +var useDialogProviderContext = ctx5.useProviderContext; +var DialogContextProvider = ctx5.ContextProvider; +var DialogScopedContextProvider = ctx5.ScopedContextProvider; +var DialogHeadingContext = (0, import_react8.createContext)(void 0); +var DialogDescriptionContext = (0, import_react8.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js +var ctx6 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx6.useContext; +var usePopoverScopedContext = ctx6.useScopedContext; +var usePopoverProviderContext = ctx6.useProviderContext; +var PopoverContextProvider = ctx6.ContextProvider; +var PopoverScopedContextProvider = ctx6.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js +var import_react9 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react9.createContext)( + void 0 +); +var ctx7 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx7.useContext; +var useComboboxScopedContext = ctx7.useScopedContext; +var useComboboxProviderContext = ctx7.useProviderContext; +var ComboboxContextProvider = ctx7.ContextProvider; +var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react9.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react9.createContext)(false); + +// node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js +var TagName = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = usePopoverProviderContext(); + store = store || context; + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) + }); + return props; + } +); +var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { + const htmlProps = usePopoverAnchor(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js +function findFirstEnabledItem2(items, excludeId) { + return items.find((item) => { + if (excludeId) { + return !item.disabled && item.id !== excludeId; + } + return !item.disabled; + }); +} +function getEnabledItem(store, id) { + if (!id) return null; + return store.item(id) || null; +} +function groupItemsByRows2(items) { + const rows = []; + for (const item of items) { + const row = rows.find((currentRow) => { + var _a; + return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; + }); + if (row) { + row.push(item); + } else { + rows.push([item]); + } + } + return rows; +} +function selectTextField(element, collapseToEnd = false) { + if (isTextField(element)) { + element.setSelectionRange( + collapseToEnd ? element.value.length : 0, + element.value.length + ); + } else if (element.isContentEditable) { + const selection = getDocument(element).getSelection(); + selection == null ? void 0 : selection.selectAllChildren(element); + if (collapseToEnd) { + selection == null ? void 0 : selection.collapseToEnd(); + } + } +} +var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); +function focusSilently(element) { + element[FOCUS_SILENTLY] = true; + element.focus({ preventScroll: true }); +} +function silentlyFocused(element) { + const isSilentlyFocused = element[FOCUS_SILENTLY]; + delete element[FOCUS_SILENTLY]; + return isSilentlyFocused; +} +function isItem(store, element, exclude) { + if (!element) return false; + if (element === exclude) return false; + const item = store.item(element.id); + if (!item) return false; + if (exclude && item.element === exclude) return false; + return true; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react10 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react10.createContext)(true); + +// node_modules/@ariakit/core/esm/utils/focus.js +var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; +function isFocusable(element) { + if (!element.matches(selector)) return false; + if (!isVisible(element)) return false; + if (element.closest("[inert]")) return false; + return true; +} +function getClosestFocusable(element) { + while (element && !isFocusable(element)) { + element = element.closest(selector); + } + return element || null; +} +function hasFocus(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (activeElement === element) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + return activeDescendant === element.id; +} +function hasFocusWithin(element) { + const activeElement = getActiveElement(element); + if (!activeElement) return false; + if (contains(element, activeElement)) return true; + const activeDescendant = activeElement.getAttribute("aria-activedescendant"); + if (!activeDescendant) return false; + if (!("id" in element)) return false; + if (activeDescendant === element.id) return true; + return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); +} +function focusIfNeeded(element) { + if (!hasFocusWithin(element) && isFocusable(element)) { + element.focus(); + } +} +function focusIntoView(element, options) { + if (!("scrollIntoView" in element)) { + element.focus(); + } else { + element.focus({ preventScroll: true }); + element.scrollIntoView(__spreadValues2({ block: "nearest", inline: "nearest" }, options)); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js +var import_react11 = __toESM(require_react(), 1); +var TagName2 = "div"; +var isSafariBrowser = isSafari(); +var alwaysFocusVisibleInputTypes = [ + "text", + "search", + "url", + "tel", + "email", + "password", + "number", + "date", + "month", + "week", + "time", + "datetime", + "datetime-local" +]; +var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); +function markSafariFocusAncestor(element, value) { + if (!element) return; + element[safariFocusAncestorSymbol] = value; +} +function isAlwaysFocusVisible(element) { + const { tagName, readOnly, type } = element; + if (tagName === "TEXTAREA" && !readOnly) return true; + if (tagName === "SELECT" && !readOnly) return true; + if (tagName === "INPUT" && !readOnly) { + return alwaysFocusVisibleInputTypes.includes(type); + } + if (element.isContentEditable) return true; + const role = element.getAttribute("role"); + if (role === "combobox" && element.dataset.name) { + return true; + } + return false; +} +function getLabels(element) { + if ("labels" in element) { + return element.labels; + } + return null; +} +function isNativeCheckboxOrRadio(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName === "input" && element.type) { + return element.type === "radio" || element.type === "checkbox"; + } + return false; +} +function isNativeTabbable(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; +} +function supportsDisabledAttribute(tagName) { + if (!tagName) return true; + return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; +} +function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { + if (!focusable) { + return tabIndexProp; + } + if (trulyDisabled) { + if (nativeTabbable && !supportsDisabled) { + return -1; + } + return; + } + if (nativeTabbable) { + return tabIndexProp; + } + return tabIndexProp || 0; +} +function useDisableEvent(onEvent, disabled) { + return useEvent((event) => { + onEvent == null ? void 0 : onEvent(event); + if (event.defaultPrevented) return; + if (disabled) { + event.stopPropagation(); + event.preventDefault(); + } + }); +} +var isKeyboardModality = true; +function onGlobalMouseDown(event) { + const target = event.target; + if (target && "hasAttribute" in target) { + if (!target.hasAttribute("data-focus-visible")) { + isKeyboardModality = false; + } + } +} +function onGlobalKeyDown(event) { + if (event.metaKey) return; + if (event.ctrlKey) return; + if (event.altKey) return; + isKeyboardModality = true; +} +var useFocusable = createHook( + function useFocusable2(_a) { + var _b = _a, { + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible + } = _b, props = __objRest(_b, [ + "focusable", + "accessibleWhenDisabled", + "autoFocus", + "onFocusVisible" + ]); + const ref = (0, import_react11.useRef)(null); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + }, [focusable]); + if (isSafariBrowser) { + (0, import_react11.useEffect)(() => { + if (!focusable) return; + const element = ref.current; + if (!element) return; + if (!isNativeCheckboxOrRadio(element)) return; + const labels = getLabels(element); + if (!labels) return; + const onMouseUp = () => queueMicrotask(() => element.focus()); + for (const label of labels) { + label.addEventListener("mouseup", onMouseUp); + } + return () => { + for (const label of labels) { + label.removeEventListener("mouseup", onMouseUp); + } + }; + }, [focusable]); + } + const disabled = focusable && disabledFromProps(props); + const trulyDisabled = !!disabled && !accessibleWhenDisabled; + const [focusVisible, setFocusVisible] = (0, import_react11.useState)(false); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react11.useEffect)(() => { + if (!focusable) return; + if (!focusVisible) return; + const element = ref.current; + if (!element) return; + if (typeof IntersectionObserver === "undefined") return; + const observer = new IntersectionObserver(() => { + if (!isFocusable(element)) { + setFocusVisible(false); + } + }); + observer.observe(element); + return () => observer.disconnect(); + }, [focusable, focusVisible]); + const onKeyPressCapture = useDisableEvent( + props.onKeyPressCapture, + disabled + ); + const onMouseDownCapture = useDisableEvent( + props.onMouseDownCapture, + disabled + ); + const onClickCapture = useDisableEvent(props.onClickCapture, disabled); + const onMouseDownProp = props.onMouseDown; + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + const element = event.currentTarget; + if (!isSafariBrowser) return; + if (isPortalEvent(event)) return; + if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; + let receivedFocus = false; + const onFocus = () => { + receivedFocus = true; + }; + const options = { capture: true, once: true }; + element.addEventListener("focusin", onFocus, options); + const focusableContainer = getClosestFocusable(element.parentElement); + markSafariFocusAncestor(focusableContainer, true); + queueBeforeEvent(element, "mouseup", () => { + element.removeEventListener("focusin", onFocus, true); + markSafariFocusAncestor(focusableContainer, false); + if (receivedFocus) return; + focusIfNeeded(element); + }); + }); + const handleFocusVisible = (event, currentTarget) => { + if (currentTarget) { + event.currentTarget = currentTarget; + } + if (!focusable) return; + const element = event.currentTarget; + if (!element) return; + if (!hasFocus(element)) return; + onFocusVisible == null ? void 0 : onFocusVisible(event); + if (event.defaultPrevented) return; + element.dataset.focusVisible = "true"; + setFocusVisible(true); + }; + const onKeyDownCaptureProp = props.onKeyDownCapture; + const onKeyDownCapture = useEvent((event) => { + onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (focusVisible) return; + if (event.metaKey) return; + if (event.altKey) return; + if (event.ctrlKey) return; + if (!isSelfTarget(event)) return; + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + queueBeforeEvent(element, "focusout", applyFocusVisible); + }); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!focusable) return; + if (!isSelfTarget(event)) { + setFocusVisible(false); + return; + } + const element = event.currentTarget; + const applyFocusVisible = () => handleFocusVisible(event, element); + if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { + queueBeforeEvent(event.target, "focusout", applyFocusVisible); + } else { + setFocusVisible(false); + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + onBlurProp == null ? void 0 : onBlurProp(event); + if (!focusable) return; + if (!isFocusEventOutside(event)) return; + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react11.useContext)(FocusableContext); + const autoFocusRef = useEvent((element) => { + if (!focusable) return; + if (!autoFocus) return; + if (!element) return; + if (!autoFocusOnShow) return; + queueMicrotask(() => { + if (hasFocus(element)) return; + if (!isFocusable(element)) return; + element.focus(); + }); + }); + const tagName = useTagName(ref); + const nativeTabbable = focusable && isNativeTabbable(tagName); + const supportsDisabled = focusable && supportsDisabledAttribute(tagName); + const styleProp = props.style; + const style = (0, import_react11.useMemo)(() => { + if (trulyDisabled) { + return __spreadValues({ pointerEvents: "none" }, styleProp); + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = __spreadProps(__spreadValues({ + "data-focus-visible": focusable && focusVisible || void 0, + "data-autofocus": autoFocus || void 0, + "aria-disabled": disabled || void 0 + }, props), { + ref: useMergeRefs(ref, autoFocusRef, props.ref), + style, + tabIndex: getTabIndex( + focusable, + trulyDisabled, + nativeTabbable, + supportsDisabled, + props.tabIndex + ), + disabled: supportsDisabled && trulyDisabled ? true : void 0, + // TODO: Test Focusable contentEditable. + contentEditable: disabled ? void 0 : props.contentEditable, + onKeyPressCapture, + onClickCapture, + onMouseDownCapture, + onMouseDown, + onKeyDownCapture, + onFocusCapture, + onBlur + }); + return removeUndefinedValues(props); + } +); +var Focusable = forwardRef22(function Focusable2(props) { + const htmlProps = useFocusable(props); + return createElement3(TagName2, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName3 = "div"; +function isGrid(items) { + return items.some((item) => !!item.rowId); +} +function isPrintableKey(event) { + const target = event.target; + if (target && !isTextField(target)) return false; + return event.key.length === 1 && !event.ctrlKey && !event.metaKey; +} +function isModifierKey(event) { + return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; +} +function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { + return useEvent((event) => { + var _a; + onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); + if (event.defaultPrevented) return; + if (event.isPropagationStopped()) return; + if (!isSelfTarget(event)) return; + if (isModifierKey(event)) return; + if (isPrintableKey(event)) return; + const state = store.getState(); + const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; + if (!activeElement) return; + const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); + const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; + if (activeElement !== previousElement) { + activeElement.focus(); + } + if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { + event.preventDefault(); + } + if (event.currentTarget.contains(activeElement)) { + event.stopPropagation(); + } + }); +} +function findFirstEnabledItemInTheLastRow(items) { + return findFirstEnabledItem2( + flatten2DArray(reverseArray(groupItemsByRows2(items))) + ); +} +function useScheduleFocus(store) { + const [scheduled, setScheduled] = (0, import_react12.useState)(false); + const schedule = (0, import_react12.useCallback)(() => setScheduled(true), []); + const activeItem = store.useState( + (state) => getEnabledItem(store, state.activeId) + ); + (0, import_react12.useEffect)(() => { + const activeElement = activeItem == null ? void 0 : activeItem.element; + if (!scheduled) return; + if (!activeElement) return; + setScheduled(false); + activeElement.focus({ preventScroll: true }); + }, [activeItem, scheduled]); + return schedule; +} +var useComposite = createHook( + function useComposite2(_a) { + var _b = _a, { + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true + } = _b, props = __objRest(_b, [ + "store", + "composite", + "focusOnMove", + "moveOnKeyPress" + ]); + const context = useCompositeProviderContext(); + store = store || context; + invariant( + store, + "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." + ); + const ref = (0, import_react12.useRef)(null); + const previousElementRef = (0, import_react12.useRef)(null); + const scheduleFocus = useScheduleFocus(store); + const moves = store.useState("moves"); + const [, setBaseElement] = useTransactionState( + composite ? store.setBaseElement : null + ); + (0, import_react12.useEffect)(() => { + var _a2; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + if (!itemElement) return; + focusIntoView(itemElement); + }, [store, moves, composite, focusOnMove]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!moves) return; + if (!composite) return; + const { baseElement, activeId: activeId2 } = store.getState(); + const isSelfAcive = activeId2 === null; + if (!isSelfAcive) return; + if (!baseElement) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (previousElement) { + fireBlurEvent(previousElement, { relatedTarget: baseElement }); + } + if (!hasFocus(baseElement)) { + baseElement.focus(); + } + }, [store, moves, composite]); + const activeId = store.useState("activeId"); + const virtualFocus = store.useState("virtualFocus"); + useSafeLayoutEffect(() => { + var _a2; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; + const relatedTarget = activeElement || getActiveElement(previousElement); + if (relatedTarget === previousElement) return; + fireBlurEvent(previousElement, { relatedTarget }); + }, [store, activeId, virtualFocus, composite]); + const onKeyDownCapture = useKeyboardEventProxy( + store, + props.onKeyDownCapture, + previousElementRef + ); + const onKeyUpCapture = useKeyboardEventProxy( + store, + props.onKeyUpCapture, + previousElementRef + ); + const onFocusCaptureProp = props.onFocusCapture; + const onFocusCapture = useEvent((event) => { + onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (!virtualFocus2) return; + const previousActiveElement = event.relatedTarget; + const isSilentlyFocused = silentlyFocused(event.currentTarget); + if (isSelfTarget(event) && isSilentlyFocused) { + event.stopPropagation(); + previousElementRef.current = previousActiveElement; + } + }); + const onFocusProp = props.onFocus; + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (!composite) return; + if (!store) return; + const { relatedTarget } = event; + const { virtualFocus: virtualFocus2 } = store.getState(); + if (virtualFocus2) { + if (isSelfTarget(event) && !isItem(store, relatedTarget)) { + queueMicrotask(scheduleFocus); + } + } else if (isSelfTarget(event)) { + store.setActiveId(null); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + var _a2; + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); + if (!virtualFocus2) return; + const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; + const nextActiveElement = event.relatedTarget; + const nextActiveElementIsItem = isItem(store, nextActiveElement); + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (isSelfTarget(event) && nextActiveElementIsItem) { + if (nextActiveElement === activeElement) { + if (previousElement && previousElement !== nextActiveElement) { + fireBlurEvent(previousElement, event); + } + } else if (activeElement) { + fireBlurEvent(activeElement, event); + } else if (previousElement) { + fireBlurEvent(previousElement, event); + } + event.stopPropagation(); + } else { + const targetIsItem = isItem(store, event.target); + if (!targetIsItem && activeElement) { + fireBlurEvent(activeElement, event); + } + } + }); + const onKeyDownProp = props.onKeyDown; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + var _a2; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; + const isVertical = orientation !== "horizontal"; + const isHorizontal = orientation !== "vertical"; + const grid = isGrid(renderedItems); + const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; + if (isHorizontalKey && isTextField(event.currentTarget)) return; + const up = () => { + if (grid) { + const item = findFirstEnabledItemInTheLastRow(renderedItems); + return item == null ? void 0 : item.id; + } + return store == null ? void 0 : store.last(); + }; + const keyMap = { + ArrowUp: (grid || isVertical) && up, + ArrowRight: (grid || isHorizontal) && store.first, + ArrowDown: (grid || isVertical) && store.first, + ArrowLeft: (grid || isHorizontal) && store.last, + Home: store.first, + End: store.last, + PageUp: store.first, + PageDown: store.last + }; + const action = keyMap[event.key]; + if (action) { + const id = action(); + if (id !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(id); + } + } + }); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a2; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; + }); + props = __spreadProps(__spreadValues({ + "aria-activedescendant": activeDescendant + }, props), { + ref: useMergeRefs(ref, setBaseElement, props.ref), + onKeyDownCapture, + onKeyUpCapture, + onFocusCapture, + onFocus, + onBlurCapture, + onKeyDown + }); + const focusable = store.useState( + (state) => composite && (state.virtualFocus || state.activeId === null) + ); + props = useFocusable(__spreadValues({ focusable }, props)); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName3, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react13 = __toESM(require_react(), 1); +var TagName4 = "input"; +function isFirstItemAutoSelected(items, activeValue, autoSelect) { + if (!autoSelect) return false; + const firstItem = items.find((item) => !item.disabled && item.value); + return (firstItem == null ? void 0 : firstItem.value) === activeValue; +} +function hasCompletionString(value, activeValue) { + if (!activeValue) return false; + if (value == null) return false; + value = normalizeString(value); + return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; +} +function isInputEvent(event) { + return event.type === "input"; +} +function isAriaAutoCompleteValue(value) { + return value === "inline" || value === "list" || value === "both" || value === "none"; +} +function getDefaultAutoSelectId(items) { + const item = items.find((item2) => { + var _a; + if (item2.disabled) return false; + return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; + }); + return item == null ? void 0 : item.id; +} +var useCombobox = createHook( + function useCombobox2(_a) { + var _b = _a, { + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list" + } = _b, props = __objRest(_b, [ + "store", + "focusable", + "autoSelect", + "getAutoSelectId", + "setValueOnChange", + "showMinLength", + "showOnChange", + "showOnMouseDown", + "showOnClick", + "showOnKeyDown", + "showOnKeyPress", + "blurActiveItemOnClick", + "setValueOnClick", + "moveOnKeyPress", + "autoComplete" + ]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react13.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react13.useRef)(false); + const composingRef = (0, import_react13.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react13.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react13.useRef)(); + (0, import_react13.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a2; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return; + } + return state.activeValue; + }); + const items = store.useState("renderedItems"); + const open = store.useState("open"); + const contentElement = store.useState("contentElement"); + const value = (0, import_react13.useMemo)(() => { + if (!inline) return storeValue; + if (!canInline) return storeValue; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (firstItemAutoSelected) { + if (hasCompletionString(storeValue, inlineActiveValue)) { + const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; + return storeValue + slice; + } + return storeValue; + } + return inlineActiveValue || storeValue; + }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); + (0, import_react13.useEffect)(() => { + const element = ref.current; + if (!element) return; + const onCompositeItemMove = () => setCanInline(true); + element.addEventListener("combobox-item-move", onCompositeItemMove); + return () => { + element.removeEventListener("combobox-item-move", onCompositeItemMove); + }; + }, []); + (0, import_react13.useEffect)(() => { + if (!inline) return; + if (!canInline) return; + if (!inlineActiveValue) return; + const firstItemAutoSelected = isFirstItemAutoSelected( + items, + inlineActiveValue, + autoSelect + ); + if (!firstItemAutoSelected) return; + if (!hasCompletionString(storeValue, inlineActiveValue)) return; + let cleanup = noop; + queueMicrotask(() => { + const element = ref.current; + if (!element) return; + const { start: prevStart, end: prevEnd } = getTextboxSelection(element); + const nextStart = storeValue.length; + const nextEnd = inlineActiveValue.length; + setSelectionRange(element, nextStart, nextEnd); + cleanup = () => { + if (!hasFocus(element)) return; + const { start, end } = getTextboxSelection(element); + if (start !== nextStart) return; + if (end !== nextEnd) return; + setSelectionRange(element, prevStart, prevEnd); + }; + }); + return () => cleanup(); + }, [ + valueUpdated, + inline, + canInline, + inlineActiveValue, + items, + autoSelect, + storeValue + ]); + const scrollingElementRef = (0, import_react13.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react13.useRef)(null); + (0, import_react13.useEffect)(() => { + if (!open) return; + if (!contentElement) return; + const scrollingElement = getScrollingElement(contentElement); + if (!scrollingElement) return; + scrollingElementRef.current = scrollingElement; + const onUserScroll = () => { + canAutoSelectRef.current = false; + }; + const onScroll = () => { + if (!store) return; + if (!canAutoSelectRef.current) return; + const { activeId } = store.getState(); + if (activeId === null) return; + if (activeId === autoSelectIdRef.current) return; + canAutoSelectRef.current = false; + }; + const options = { passive: true, capture: true }; + scrollingElement.addEventListener("wheel", onUserScroll, options); + scrollingElement.addEventListener("touchmove", onUserScroll, options); + scrollingElement.addEventListener("scroll", onScroll, options); + return () => { + scrollingElement.removeEventListener("wheel", onUserScroll, true); + scrollingElement.removeEventListener("touchmove", onUserScroll, true); + scrollingElement.removeEventListener("scroll", onScroll, true); + }; + }, [open, contentElement, store]); + useSafeLayoutEffect(() => { + if (!storeValue) return; + if (composingRef.current) return; + canAutoSelectRef.current = true; + }, [storeValue]); + useSafeLayoutEffect(() => { + if (autoSelect !== "always" && open) return; + canAutoSelectRef.current = open; + }, [autoSelect, open]); + const resetValueOnSelect = store.useState("resetValueOnSelect"); + useUpdateEffect(() => { + var _a2, _b2; + const canAutoSelect = canAutoSelectRef.current; + if (!store) return; + if (!open) return; + if (!canAutoSelect && !resetValueOnSelect) return; + const { baseElement, contentElement: contentElement2, activeId } = store.getState(); + if (baseElement && !hasFocus(baseElement)) return; + if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { + const observer = new MutationObserver(forceValueUpdate); + observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); + return () => observer.disconnect(); + } + if (autoSelect && canAutoSelect) { + const userAutoSelectId = getAutoSelectIdProp(items); + const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react13.useEffect)(() => { + if (!inline) return; + const combobox = ref.current; + if (!combobox) return; + const elements = [combobox, contentElement].filter( + (value2) => !!value2 + ); + const onBlur2 = (event) => { + if (elements.every((el) => isFocusEventOutside(event, el))) { + store == null ? void 0 : store.setValue(value); + } + }; + for (const element of elements) { + element.addEventListener("focusout", onBlur2); + } + return () => { + for (const element of elements) { + element.removeEventListener("focusout", onBlur2); + } + }; + }, [inline, contentElement, store, value]); + const canShow = (event) => { + const currentTarget = event.currentTarget; + return currentTarget.value.length >= showMinLength; + }; + const onChangeProp = props.onChange; + const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); + const setValueOnChangeProp = useBooleanEvent( + // If the combobox is combined with tags, the value will be set by the tag + // input component. + setValueOnChange != null ? setValueOnChange : !store.tag + ); + const onChange = useEvent((event) => { + onChangeProp == null ? void 0 : onChangeProp(event); + if (event.defaultPrevented) return; + if (!store) return; + const currentTarget = event.currentTarget; + const { value: value2, selectionStart, selectionEnd } = currentTarget; + const nativeEvent = event.nativeEvent; + canAutoSelectRef.current = true; + if (isInputEvent(nativeEvent)) { + if (nativeEvent.isComposing) { + canAutoSelectRef.current = false; + composingRef.current = true; + } + if (inline) { + const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; + const caretAtEnd = selectionStart === value2.length; + setCanInline(textInserted && caretAtEnd); + } + } + if (setValueOnChangeProp(event)) { + const isSameValue = value2 === store.getState().value; + store.setValue(value2); + queueMicrotask(() => { + setSelectionRange(currentTarget, selectionStart, selectionEnd); + }); + if (inline && autoSelect && isSameValue) { + forceValueUpdate(); + } + } + if (showOnChangeProp(event)) { + store.show(); + } + if (!autoSelect || !canAutoSelectRef.current) { + store.setActiveId(null); + } + }); + const onCompositionEndProp = props.onCompositionEnd; + const onCompositionEnd = useEvent((event) => { + canAutoSelectRef.current = true; + composingRef.current = false; + onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); + if (event.defaultPrevented) return; + if (!autoSelect) return; + forceValueUpdate(); + }); + const onMouseDownProp = props.onMouseDown; + const blurActiveItemOnClickProp = useBooleanEvent( + blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement) + ); + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); + const onMouseDown = useEvent((event) => { + onMouseDownProp == null ? void 0 : onMouseDownProp(event); + if (event.defaultPrevented) return; + if (event.button) return; + if (event.ctrlKey) return; + if (!store) return; + if (blurActiveItemOnClickProp(event)) { + store.setActiveId(null); + } + if (setValueOnClickProp(event)) { + store.setValue(value); + } + if (showOnClickProp(event)) { + queueBeforeEvent(event.currentTarget, "mouseup", store.show); + } + }); + const onKeyDownProp = props.onKeyDown; + const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (!event.repeat) { + canAutoSelectRef.current = false; + } + if (event.defaultPrevented) return; + if (event.ctrlKey) return; + if (event.altKey) return; + if (event.shiftKey) return; + if (event.metaKey) return; + if (!store) return; + const { open: open2 } = store.getState(); + if (open2) return; + if (event.key === "ArrowUp" || event.key === "ArrowDown") { + if (showOnKeyPressProp(event)) { + event.preventDefault(); + store.show(); + } + } + }); + const onBlurProp = props.onBlur; + const onBlur = useEvent((event) => { + canAutoSelectRef.current = false; + onBlurProp == null ? void 0 : onBlurProp(event); + if (event.defaultPrevented) return; + }); + const id = useId3(props.id); + const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; + const isActiveItem = store.useState((state) => state.activeId === null); + props = __spreadProps(__spreadValues({ + id, + role: "combobox", + "aria-autocomplete": ariaAutoComplete, + "aria-haspopup": getPopupRole(contentElement, "listbox"), + "aria-expanded": open, + "aria-controls": contentElement == null ? void 0 : contentElement.id, + "data-active-item": isActiveItem || void 0, + value + }, props), { + ref: useMergeRefs(ref, props.ref), + onChange, + onCompositionEnd, + onMouseDown, + onKeyDown, + onBlur + }); + props = useComposite(__spreadProps(__spreadValues({ + store, + focusable + }, props), { + // Enable inline autocomplete when the user moves from the combobox input + // to an item. + moveOnKeyPress: (event) => { + if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; + if (inline) setCanInline(true); + return true; + } + })); + props = usePopoverAnchor(__spreadValues({ store }, props)); + return __spreadValues({ autoComplete: "off" }, props); + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName4, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js +var import_react14 = __toESM(require_react(), 1); +var TagName5 = "button"; +function isNativeClick(event) { + if (!event.isTrusted) return false; + const element = event.currentTarget; + if (event.key === "Enter") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; + } + if (event.key === " ") { + return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; + } + return false; +} +var symbol = /* @__PURE__ */ Symbol("command"); +var useCommand = createHook( + function useCommand2(_a) { + var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); + const ref = (0, import_react14.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); + (0, import_react14.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react14.useState)(false); + const activeRef = (0, import_react14.useRef)(false); + const disabled = disabledFromProps(props); + const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + const element = event.currentTarget; + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (!isSelfTarget(event)) return; + if (isTextField(element)) return; + if (element.isContentEditable) return; + const isEnter = clickOnEnter && event.key === "Enter"; + const isSpace = clickOnSpace && event.key === " "; + const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; + const shouldPreventSpace = event.key === " " && !clickOnSpace; + if (shouldPreventEnter || shouldPreventSpace) { + event.preventDefault(); + return; + } + if (isEnter || isSpace) { + const nativeClick = isNativeClick(event); + if (isEnter) { + if (!nativeClick) { + event.preventDefault(); + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + const click = () => fireClickEvent(element, eventInit); + if (isFirefox()) { + queueBeforeEvent(element, "keyup", click); + } else { + queueMicrotask(click); + } + } + } else if (isSpace) { + activeRef.current = true; + if (!nativeClick) { + event.preventDefault(); + setActive(true); + } + } + } + }); + const onKeyUpProp = props.onKeyUp; + const onKeyUp = useEvent((event) => { + onKeyUpProp == null ? void 0 : onKeyUpProp(event); + if (event.defaultPrevented) return; + if (isDuplicate) return; + if (disabled) return; + if (event.metaKey) return; + const isSpace = clickOnSpace && event.key === " "; + if (activeRef.current && isSpace) { + activeRef.current = false; + if (!isNativeClick(event)) { + event.preventDefault(); + setActive(false); + const element = event.currentTarget; + const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = __spreadProps(__spreadValues(__spreadValues({ + "data-active": active || void 0, + type: isNativeButton ? "button" : void 0 + }, metadataProps), props), { + ref: useMergeRefs(ref, props.ref), + onKeyDown, + onKeyUp + }); + props = useFocusable(props); + return props; + } +); +var Command = forwardRef22(function Command2(props) { + const htmlProps = useCommand(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js +var import_react15 = __toESM(require_react(), 1); +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "span"; +function normalizeValue(value) { + return normalizeString(value).toLowerCase(); +} +function getOffsets(string, values) { + const offsets = []; + for (const value of values) { + let pos = 0; + const length = value.length; + while (string.indexOf(value, pos) !== -1) { + const index = string.indexOf(value, pos); + if (index !== -1) { + offsets.push([index, length]); + } + pos = index + 1; + } + } + return offsets; +} +function filterOverlappingOffsets(offsets) { + return offsets.filter(([offset, length], i2, arr) => { + return !arr.some( + ([o2, l2], j2) => j2 !== i2 && o2 <= offset && o2 + l2 >= offset + length + ); + }); +} +function sortOffsets(offsets) { + return offsets.sort(([a2], [b2]) => a2 - b2); +} +function splitValue(itemValue, userValue) { + if (!itemValue) return itemValue; + if (!userValue) return itemValue; + const userValues = toArray(userValue).filter(Boolean).map(normalizeValue); + const parts = []; + const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "span", + { + "data-autocomplete-value": autocomplete ? "" : void 0, + "data-user-value": autocomplete ? void 0 : "", + children: value + }, + parts.length + ); + const offsets = sortOffsets( + filterOverlappingOffsets( + // Convert userValues into a set to avoid duplicates + getOffsets(normalizeValue(itemValue), new Set(userValues)) + ) + ); + if (!offsets.length) { + parts.push(span(itemValue, true)); + return parts; + } + const [firstOffset] = offsets[0]; + const values = [ + itemValue.slice(0, firstOffset), + ...offsets.flatMap(([offset, length], i2) => { + var _a; + const value = itemValue.slice(offset, offset + length); + const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; + const nextValue = itemValue.slice(offset + length, nextOffset); + return [value, nextValue]; + }) + ]; + values.forEach((value, i2) => { + if (!value) return; + parts.push(span(value, i2 % 2 === 0)); + }); + return parts; +} +var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) { + var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]); + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react15.useContext)(ComboboxItemValueContext); + const itemValue = value != null ? value : itemContext; + const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); + const children = (0, import_react15.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = __spreadValues({ + children + }, props); + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName6, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js +var import_react16 = __toESM(require_react(), 1); +var TagName7 = "div"; +function getMouseDestination(event) { + const relatedTarget = event.relatedTarget; + if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { + return relatedTarget; + } + return null; +} +function hoveringInside(event) { + const nextElement = getMouseDestination(event); + if (!nextElement) return false; + return contains(event.currentTarget, nextElement); +} +var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); +function movingToAnotherItem(event) { + let dest = getMouseDestination(event); + if (!dest) return false; + do { + if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; + dest = dest.parentElement; + } while (dest); + return false; +} +var useCompositeHover = createHook( + function useCompositeHover2(_a) { + var _b = _a, { + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover + } = _b, props = __objRest(_b, [ + "store", + "focusOnHover", + "blurOnHoverEnd" + ]); + const context = useCompositeContext(); + store = store || context; + invariant( + store, + "CompositeHover must be wrapped in a Composite component." + ); + const isMouseMoving = useIsMouseMoving(); + const onMouseMoveProp = props.onMouseMove; + const focusOnHoverProp = useBooleanEvent(focusOnHover); + const onMouseMove = useEvent((event) => { + onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (!focusOnHoverProp(event)) return; + if (!hasFocusWithin(event.currentTarget)) { + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (baseElement && !hasFocus(baseElement)) { + baseElement.focus(); + } + } + store == null ? void 0 : store.setActiveId(event.currentTarget.id); + }); + const onMouseLeaveProp = props.onMouseLeave; + const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); + const onMouseLeave = useEvent((event) => { + var _a2; + onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); + if (event.defaultPrevented) return; + if (!isMouseMoving()) return; + if (hoveringInside(event)) return; + if (movingToAnotherItem(event)) return; + if (!focusOnHoverProp(event)) return; + if (!blurOnHoverEndProp(event)) return; + store == null ? void 0 : store.setActiveId(null); + (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }); + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName7, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js +var import_react17 = __toESM(require_react(), 1); +var TagName8 = "div"; +var useCollectionItem = createHook( + function useCollectionItem2(_a) { + var _b = _a, { + store, + shouldRegisterItem = true, + getItem = identity, + element + } = _b, props = __objRest(_b, [ + "store", + "shouldRegisterItem", + "getItem", + // @ts-expect-error This prop may come from a collection renderer. + "element" + ]); + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react17.useRef)(element); + (0, import_react17.useEffect)(() => { + const element2 = ref.current; + if (!id) return; + if (!element2) return; + if (!shouldRegisterItem) return; + const item = getItem({ id, element: element2 }); + return store == null ? void 0 : store.renderItem(item); + }, [id, shouldRegisterItem, getItem, store]); + props = __spreadProps(__spreadValues({}, props), { + ref: useMergeRefs(ref, props.ref) + }); + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName8, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +var TagName9 = "button"; +function isEditableElement(element) { + if (isTextbox(element)) return true; + return element.tagName === "INPUT" && !isButton(element); +} +function getNextPageOffset(scrollingElement, pageUp = false) { + const height = scrollingElement.clientHeight; + const { top } = scrollingElement.getBoundingClientRect(); + const pageSize = Math.max(height * 0.875, height - 40) * 1.5; + const pageOffset = pageUp ? height - pageSize + top : pageSize + top; + if (scrollingElement.tagName === "HTML") { + return pageOffset + scrollingElement.scrollTop; + } + return pageOffset; +} +function getItemOffset(itemElement, pageUp = false) { + const { top } = itemElement.getBoundingClientRect(); + if (pageUp) { + return top + itemElement.clientHeight; + } + return top; +} +function findNextPageItemId(element, store, next, pageUp = false) { + var _a; + if (!store) return; + if (!next) return; + const { renderedItems } = store.getState(); + const scrollingElement = getScrollingElement(element); + if (!scrollingElement) return; + const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); + let id; + let prevDifference; + for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { + const previousId = id; + id = next(i2); + if (!id) break; + if (id === previousId) continue; + const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; + if (!itemElement) continue; + const itemOffset = getItemOffset(itemElement, pageUp); + const difference = itemOffset - nextPageOffset; + const absDifference = Math.abs(difference); + if (pageUp && difference <= 0 || !pageUp && difference >= 0) { + if (prevDifference !== void 0 && prevDifference < absDifference) { + id = previousId; + } + break; + } + prevDifference = absDifference; + } + return id; +} +function targetIsAnotherItem(event, store) { + if (isSelfTarget(event)) return false; + return isItem(store, event.target); +} +var useCompositeItem = createHook( + function useCompositeItem2(_a) { + var _b = _a, { + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp + } = _b, props = __objRest(_b, [ + "store", + "rowId", + "preventScrollOnKeyDown", + "moveOnKeyPress", + "tabbable", + "getItem", + "aria-setsize", + "aria-posinset" + ]); + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react18.useRef)(null); + const row = (0, import_react18.useContext)(CompositeRowContext); + const disabled = disabledFromProps(props); + const trulyDisabled = disabled && !props.accessibleWhenDisabled; + const { + rowId, + baseElement, + isActiveItem, + ariaSetSize, + ariaPosInSet, + isTabbable + } = useStoreStateObject(store, { + rowId(state) { + if (rowIdProp) return rowIdProp; + if (!state) return; + if (!(row == null ? void 0 : row.baseElement)) return; + if (row.baseElement !== state.baseElement) return; + return row.id; + }, + baseElement(state) { + return (state == null ? void 0 : state.baseElement) || void 0; + }, + isActiveItem(state) { + return !!state && state.activeId === id; + }, + ariaSetSize(state) { + if (ariaSetSizeProp != null) return ariaSetSizeProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaSetSize)) return; + if (row.baseElement !== state.baseElement) return; + return row.ariaSetSize; + }, + ariaPosInSet(state) { + if (ariaPosInSetProp != null) return ariaPosInSetProp; + if (!state) return; + if (!(row == null ? void 0 : row.ariaPosInSet)) return; + if (row.baseElement !== state.baseElement) return; + const itemsInRow = state.renderedItems.filter( + (item) => item.rowId === rowId + ); + return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); + }, + isTabbable(state) { + if (!(state == null ? void 0 : state.renderedItems.length)) return true; + if (state.virtualFocus) return false; + if (tabbable) return true; + if (state.activeId === null) return false; + const item = store == null ? void 0 : store.item(state.activeId); + if (item == null ? void 0 : item.disabled) return true; + if (!(item == null ? void 0 : item.element)) return true; + return state.activeId === id; + } + }); + const getItem = (0, import_react18.useCallback)( + (item) => { + var _a2; + const nextItem = __spreadProps(__spreadValues({}, item), { + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a2 = item.element) == null ? void 0 : _a2.textContent + }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react18.useRef)(false); + const onFocus = useEvent((event) => { + onFocusProp == null ? void 0 : onFocusProp(event); + if (event.defaultPrevented) return; + if (isPortalEvent(event)) return; + if (!id) return; + if (!store) return; + if (targetIsAnotherItem(event, store)) return; + const { virtualFocus, baseElement: baseElement2 } = store.getState(); + store.setActiveId(id); + if (isTextbox(event.currentTarget)) { + selectTextField(event.currentTarget); + } + if (!virtualFocus) return; + if (!isSelfTarget(event)) return; + if (isEditableElement(event.currentTarget)) return; + if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; + if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { + event.currentTarget.scrollIntoView({ + block: "nearest", + inline: "nearest" + }); + } + hasFocusedComposite.current = true; + const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); + if (fromComposite) { + focusSilently(baseElement2); + } else { + baseElement2.focus(); + } + }); + const onBlurCaptureProp = props.onBlurCapture; + const onBlurCapture = useEvent((event) => { + onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); + if (event.defaultPrevented) return; + const state = store == null ? void 0 : store.getState(); + if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { + hasFocusedComposite.current = false; + event.preventDefault(); + event.stopPropagation(); + } + }); + const onKeyDownProp = props.onKeyDown; + const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + if (!isSelfTarget(event)) return; + if (!store) return; + const { currentTarget } = event; + const state = store.getState(); + const item = store.item(id); + const isGrid2 = !!(item == null ? void 0 : item.rowId); + const isVertical = state.orientation !== "horizontal"; + const isHorizontal = state.orientation !== "vertical"; + const canHomeEnd = () => { + if (isGrid2) return true; + if (isHorizontal) return true; + if (!state.baseElement) return true; + if (!isTextField(state.baseElement)) return true; + return false; + }; + const keyMap = { + ArrowUp: (isGrid2 || isVertical) && store.up, + ArrowRight: (isGrid2 || isHorizontal) && store.next, + ArrowDown: (isGrid2 || isVertical) && store.down, + ArrowLeft: (isGrid2 || isHorizontal) && store.previous, + Home: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.first(); + } + return store == null ? void 0 : store.previous(-1); + }, + End: () => { + if (!canHomeEnd()) return; + if (!isGrid2 || event.ctrlKey) { + return store == null ? void 0 : store.last(); + } + return store == null ? void 0 : store.next(-1); + }, + PageUp: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); + }, + PageDown: () => { + return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); + } + }; + const action = keyMap[event.key]; + if (action) { + if (isTextbox(currentTarget)) { + const selection = getTextboxSelection(currentTarget); + const isLeft = isHorizontal && event.key === "ArrowLeft"; + const isRight = isHorizontal && event.key === "ArrowRight"; + const isUp = isVertical && event.key === "ArrowUp"; + const isDown = isVertical && event.key === "ArrowDown"; + if (isRight || isDown) { + const { length: valueLength } = getTextboxValue(currentTarget); + if (selection.end !== valueLength) return; + } else if ((isLeft || isUp) && selection.start !== 0) return; + } + const nextId = action(); + if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { + if (!moveOnKeyPressProp(event)) return; + event.preventDefault(); + store.move(nextId); + } + } + }); + const providerValue = (0, import_react18.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = __spreadProps(__spreadValues({ + id, + "data-active-item": isActiveItem || void 0 + }, props), { + ref: useMergeRefs(ref, props.ref), + tabIndex: isTabbable ? props.tabIndex : -1, + onFocus, + onBlurCapture, + onKeyDown + }); + props = useCommand(props); + props = useCollectionItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + })); + return removeUndefinedValues(__spreadProps(__spreadValues({}, props), { + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + })); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName9, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var TagName10 = "div"; +function isSelected(storeValue, itemValue) { + if (itemValue == null) return; + if (storeValue == null) return false; + if (Array.isArray(storeValue)) { + return storeValue.includes(itemValue); + } + return storeValue === itemValue; +} +function getItemRole(popupRole) { + var _a; + const itemRoleByPopupRole = { + menu: "menuitem", + listbox: "option", + tree: "treeitem" + }; + const key = popupRole; + return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; +} +var useComboboxItem = createHook( + function useComboboxItem2(_a) { + var _b = _a, { + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp + } = _b, props = __objRest(_b, [ + "store", + "value", + "hideOnClick", + "setValueOnClick", + "selectValueOnClick", + "resetValueOnSelect", + "focusOnHover", + "moveOnKeyPress", + "getItem" + ]); + var _a2; + const context = useComboboxScopedContext(); + store = store || context; + invariant( + store, + "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." + ); + const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, { + resetValueOnSelectState: "resetValueOnSelect", + multiSelectable(state) { + return Array.isArray(state.selectedValue); + }, + selected(state) { + return isSelected(state.selectedValue, value); + } + }); + const getItem = (0, import_react19.useCallback)( + (item) => { + const nextItem = __spreadProps(__spreadValues({}, item), { value }); + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [value, getItemProp] + ); + setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; + hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; + const onClickProp = props.onClick; + const setValueOnClickProp = useBooleanEvent(setValueOnClick); + const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); + const resetValueOnSelectProp = useBooleanEvent( + (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable + ); + const hideOnClickProp = useBooleanEvent(hideOnClick); + const onClick = useEvent((event) => { + onClickProp == null ? void 0 : onClickProp(event); + if (event.defaultPrevented) return; + if (isDownloading(event)) return; + if (isOpeningInNewTab(event)) return; + if (value != null) { + if (selectValueOnClickProp(event)) { + if (resetValueOnSelectProp(event)) { + store == null ? void 0 : store.resetValue(); + } + store == null ? void 0 : store.setSelectedValue((prevValue) => { + if (!Array.isArray(prevValue)) return value; + if (prevValue.includes(value)) { + return prevValue.filter((v2) => v2 !== value); + } + return [...prevValue, value]; + }); + } + if (setValueOnClickProp(event)) { + store == null ? void 0 : store.setValue(value); + } + } + if (hideOnClickProp(event)) { + store == null ? void 0 : store.hide(); + } + }); + const onKeyDownProp = props.onKeyDown; + const onKeyDown = useEvent((event) => { + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.defaultPrevented) return; + const baseElement = store == null ? void 0 : store.getState().baseElement; + if (!baseElement) return; + if (hasFocus(baseElement)) return; + const printable = event.key.length === 1; + if (printable || event.key === "Backspace" || event.key === "Delete") { + queueMicrotask(() => baseElement.focus()); + if (isTextField(baseElement)) { + store == null ? void 0 : store.setValue(baseElement.value); + } + } + }); + if (multiSelectable && selected != null) { + props = __spreadValues({ + "aria-selected": selected + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react19.useContext)(ComboboxListRoleContext); + props = __spreadProps(__spreadValues({ + role: getItemRole(popupRole), + children: value + }, props), { + onClick, + onKeyDown + }); + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem(__spreadProps(__spreadValues({ + store + }, props), { + getItem, + // Dispatch a custom event on the combobox input when moving to an item + // with the keyboard so the Combobox component can enable inline + // autocompletion. + moveOnKeyPress: (event) => { + if (!moveOnKeyPressProp(event)) return false; + const moveEvent = new Event("combobox-item-move"); + const baseElement = store == null ? void 0 : store.getState().baseElement; + baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); + return true; + } + })); + props = useCompositeHover(__spreadValues({ store, focusOnHover }, props)); + return props; + } +); +var ComboboxItem = memo22( + forwardRef22(function ComboboxItem2(props) { + const htmlProps = useComboboxItem(props); + return createElement3(TagName10, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName11 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2(_a) { + var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); + const context = useComboboxProviderContext(); + store = store || context; + invariant( + store, + "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const comboboxId = store.useState((state) => { + var _a2; + return (_a2 = state.baseElement) == null ? void 0 : _a2.id; + }); + props = __spreadValues({ + htmlFor: comboboxId + }, props); + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName11, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js +var import_react20 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var TagName12 = "div"; +function afterTimeout(timeoutMs, cb) { + const timeoutId = setTimeout(cb, timeoutMs); + return () => clearTimeout(timeoutId); +} +function afterPaint2(cb) { + let raf = requestAnimationFrame(() => { + raf = requestAnimationFrame(cb); + }); + return () => cancelAnimationFrame(raf); +} +function parseCSSTime(...times) { + return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { + const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; + const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; + if (currentTime > longestTime) return currentTime; + return longestTime; + }, 0); +} +function isHidden(mounted, hidden, alwaysVisible) { + return !alwaysVisible && hidden !== false && (!mounted || !!hidden); +} +var useDisclosureContent = createHook(function useDisclosureContent2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const context = useDisclosureProviderContext(); + store = store || context; + invariant( + store, + "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." + ); + const ref = (0, import_react20.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react20.useState)(null); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const animated = store.useState("animated"); + const contentElement = store.useState("contentElement"); + const otherElement = useStoreState(store.disclosure, "contentElement"); + useSafeLayoutEffect(() => { + if (!ref.current) return; + store == null ? void 0 : store.setContentElement(ref.current); + }, [store]); + useSafeLayoutEffect(() => { + let previousAnimated; + store == null ? void 0 : store.setState("animated", (animated2) => { + previousAnimated = animated2; + return true; + }); + return () => { + if (previousAnimated === void 0) return; + store == null ? void 0 : store.setState("animated", previousAnimated); + }; + }, [store]); + useSafeLayoutEffect(() => { + if (!animated) return; + if (!(contentElement == null ? void 0 : contentElement.isConnected)) { + setTransition(null); + return; + } + return afterPaint2(() => { + setTransition(open ? "enter" : mounted ? "leave" : null); + }); + }, [animated, contentElement, open, mounted]); + useSafeLayoutEffect(() => { + if (!store) return; + if (!animated) return; + if (!transition) return; + if (!contentElement) return; + const stopAnimation = () => store == null ? void 0 : store.setState("animating", false); + const stopAnimationSync = () => (0, import_react_dom.flushSync)(stopAnimation); + if (transition === "leave" && open) return; + if (transition === "enter" && !open) return; + if (typeof animated === "number") { + const timeout2 = animated; + return afterTimeout(timeout2, stopAnimationSync); + } + const { + transitionDuration, + animationDuration, + transitionDelay, + animationDelay + } = getComputedStyle(contentElement); + const { + transitionDuration: transitionDuration2 = "0", + animationDuration: animationDuration2 = "0", + transitionDelay: transitionDelay2 = "0", + animationDelay: animationDelay2 = "0" + } = otherElement ? getComputedStyle(otherElement) : {}; + const delay = parseCSSTime( + transitionDelay, + animationDelay, + transitionDelay2, + animationDelay2 + ); + const duration = parseCSSTime( + transitionDuration, + animationDuration, + transitionDuration2, + animationDuration2 + ); + const timeout = delay + duration; + if (!timeout) { + if (transition === "enter") { + store.setState("animated", false); + } + stopAnimation(); + return; + } + const frameRate = 1e3 / 60; + const maxTimeout = Math.max(timeout - frameRate, 0); + return afterTimeout(maxTimeout, stopAnimationSync); + }, [store, animated, contentElement, otherElement, open, transition]); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react20.useMemo)(() => { + if (hidden) { + return __spreadProps(__spreadValues({}, styleProp), { display: "none" }); + } + return styleProp; + }, [hidden, styleProp]); + props = __spreadProps(__spreadValues({ + id, + "data-open": open || void 0, + "data-enter": transition === "enter" || void 0, + "data-leave": transition === "leave" || void 0, + hidden + }, props), { + ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), + style + }); + return removeUndefinedValues(props); +}); +var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { + const htmlProps = useDisclosureContent(props); + return createElement3(TagName12, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2(_a) { + var _b = _a, { + unmountOnHide + } = _b, props = __objRest(_b, [ + "unmountOnHide" + ]); + const context = useDisclosureProviderContext(); + const store = props.store || context; + const mounted = useStoreState( + store, + (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) + ); + if (mounted === false) return null; + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(DisclosureContentImpl, __spreadValues({}, props)); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js +var import_react21 = __toESM(require_react(), 1); +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2(_a) { + var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); + const scopedContext = useComboboxScopedContext(true); + const context = useComboboxContext(); + store = store || context; + const scopedContextSameStore = !!store && store === scopedContext; + invariant( + store, + "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." + ); + const ref = (0, import_react21.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: "none" }) : props.style; + const multiSelectable = store.useState( + (state) => Array.isArray(state.selectedValue) + ); + const role = useAttribute(ref, "role", props.role); + const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; + const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; + const [hasListboxInside, setHasListboxInside] = (0, import_react21.useState)(false); + const contentElement = store.useState("contentElement"); + useSafeLayoutEffect(() => { + if (!mounted) return; + const element = ref.current; + if (!element) return; + if (contentElement !== element) return; + const callback = () => { + setHasListboxInside(!!element.querySelector("[role='listbox']")); + }; + const observer = new MutationObserver(callback); + observer.observe(element, { + subtree: true, + childList: true, + attributeFilter: ["role"] + }); + callback(); + return () => observer.disconnect(); + }, [mounted, contentElement]); + if (!hasListboxInside) { + props = __spreadValues({ + role: "listbox", + "aria-multiselectable": ariaMultiSelectable + }, props); + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = __spreadProps(__spreadValues({ + id, + hidden + }, props), { + ref: useMergeRefs(setContentElement, ref, props.ref), + style + }); + return removeUndefinedValues(props); + } +); +var ComboboxList = forwardRef22(function ComboboxList2(props) { + const htmlProps = useComboboxList(props); + return createElement3(TagName13, htmlProps); +}); + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_remove_accents = __toESM(require_remove_accents(), 1); +var import_compose8 = __toESM(require_compose(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); +var import_element24 = __toESM(require_element(), 1); +var import_components19 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataviews-filters/utils.mjs +var EMPTY_ARRAY3 = []; +var getCurrentValue = (filterDefinition, currentFilter) => { + if (filterDefinition.singleSelection) { + return currentFilter?.value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value; + } + if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { + return [currentFilter.value]; + } + return EMPTY_ARRAY3; +}; + +// packages/dataviews/build-module/hooks/use-elements.mjs +var import_element23 = __toESM(require_element(), 1); +var EMPTY_ARRAY4 = []; +function useElements({ + elements, + getElements +}) { + const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4; + const [records, setRecords] = (0, import_element23.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element23.useState)(false); + (0, import_element23.useEffect)(() => { + if (!getElements) { + setRecords(staticElements); + return; + } + let cancelled = false; + setIsLoading(true); + getElements().then((fetchedElements) => { + if (!cancelled) { + const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; + setRecords(dynamicElements); + } + }).catch(() => { + if (!cancelled) { + setRecords(staticElements); + } + }).finally(() => { + if (!cancelled) { + setIsLoading(false); + } + }); + return () => { + cancelled = true; + }; + }, [getElements, staticElements]); + return { + elements: records, + isLoading + }; +} + +// packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +function normalizeSearchInput(input = "") { + return (0, import_remove_accents.default)(input.trim().toLowerCase()); +} +var getNewValue = (filterDefinition, currentFilter, value) => { + if (filterDefinition.singleSelection) { + return value; + } + if (Array.isArray(currentFilter?.value)) { + return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; + } + return [value]; +}; +function generateFilterElementCompositeItemId(prefix, filterElementValue) { + return `${prefix}-${filterElementValue}`; +} +var MultiSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-multi-selection", + { "is-selected": selected } + ), + children: selected && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components19.Icon, { icon: check_default }) + } + ); +}; +var SingleSelectionOption = ({ selected }) => { + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "span", + { + className: clsx_default( + "dataviews-filters__search-widget-listitem-single-selection", + { "is-selected": selected } + ) + } + ); +}; +function ListBox({ view, filter, onChangeView }) { + const baseId = (0, import_compose8.useInstanceId)(ListBox, "dataviews-filter-list-box"); + const [activeCompositeId, setActiveCompositeId] = (0, import_element24.useState)( + // When there are one or less operators, the first item is set as active + // (by setting the initial `activeId` to `undefined`). + // With 2 or more operators, the focus is moved on the operators control + // (by setting the initial `activeId` to `null`), meaning that there won't + // be an active item initially. Focus is then managed via the + // `onFocusVisible` callback. + filter.operators?.length === 1 ? void 0 : null + ); + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components19.Composite, + { + virtualFocus: true, + focusLoop: true, + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + role: "listbox", + className: "dataviews-filters__search-widget-listbox", + "aria-label": (0, import_i18n22.sprintf)( + /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ + (0, import_i18n22.__)("List of: %1$s"), + filter.name + ), + onFocusVisible: () => { + if (!activeCompositeId && filter.elements.length) { + setActiveCompositeId( + generateFilterElementCompositeItemId( + baseId, + filter.elements[0].value + ) + ); + } + }, + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components19.Composite.Typeahead, {}), + children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + import_components19.Composite.Hover, + { + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + import_components19.Composite.Item, + { + id: generateFilterElementCompositeItemId( + baseId, + element.value + ), + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + "div", + { + "aria-label": element.label, + role: "option", + className: "dataviews-filters__search-widget-listitem" + } + ), + onClick: () => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value: getNewValue( + filter, + currentFilter, + element.value + ) + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + } + } + ), + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes(element.value) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: element.label }) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element24.useState)(""); + const deferredSearchValue = (0, import_element24.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element24.useMemo)(() => { + const normalizedSearch = normalizeSearchInput(deferredSearchValue); + return filter.elements.filter( + (item) => normalizeSearchInput(item.label).includes(normalizedSearch) + ); + }, [filter.elements, deferredSearchValue]); + return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + ComboboxProvider, + { + selectedValue: currentValue, + setSelectedValue: (value) => { + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map((_filter) => { + if (_filter.field === filter.field) { + return { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + value + }; + } + return _filter; + }) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: filter.operators[0], + value + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + setValue: setSearchValue, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + ComboboxLabel, + { + render: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components19.VisuallyHidden, { children: (0, import_i18n22.__)("Search items") }), + children: (0, import_i18n22.__)("Search items") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + Combobox, + { + autoSelect: "always", + placeholder: (0, import_i18n22.__)("Search"), + className: "dataviews-filters__search-widget-filter-combobox__input" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components19.Icon, { icon: search_default }) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + ComboboxList, + { + className: "dataviews-filters__search-widget-filter-combobox-list", + alwaysVisible: true, + children: [ + matches.map((element) => { + return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)( + ComboboxItem, + { + resetValueOnSelect: false, + value: element.value, + className: "dataviews-filters__search-widget-listitem", + hideOnClick: false, + setValueOnClick: false, + focusOnHover: true, + children: [ + filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + SingleSelectionOption, + { + selected: currentValue === element.value + } + ), + !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + MultiSelectionOption, + { + selected: currentValue.includes( + element.value + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( + ComboboxItemValue, + { + className: "dataviews-filters__search-widget-filter-combobox-item-value", + value: element.label + } + ), + !!element.description && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) + ] }) + ] + }, + element.value + ); + }), + !matches.length && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", { children: (0, import_i18n22.__)("No results found") }) + ] + } + ) + ] + } + ); +} +function SearchWidget(props) { + const { elements, isLoading } = useElements({ + elements: props.filter.elements, + getElements: props.filter.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components19.Spinner, {}) }); + } + if (elements.length === 0) { + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n22.__)("No elements found") }); + } + const Widget = elements.length > 10 ? ComboboxList22 : ListBox; + return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Widget, { ...props, filter: { ...props.filter, elements } }); +} + +// packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs +var import_es6 = __toESM(require_es6(), 1); +var import_compose9 = __toESM(require_compose(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_components20 = __toESM(require_components(), 1); +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +function InputWidget({ + filter, + view, + onChangeView, + fields +}) { + const currentFilter = view.filters?.find( + (f2) => f2.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const field = (0, import_element25.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Deactivate validation for filters. + isValid: {}, + // Configure getValue/setValue as if Item was a plain object. + getValue: ({ item }) => item[currentField.id], + setValue: ({ value }) => ({ + [currentField.id]: value + }) + }; + } + return currentField; + }, [fields, filter.field]); + const data = (0, import_element25.useMemo)(() => { + return (view.filters ?? []).reduce( + (acc, activeFilter) => { + acc[activeFilter.field] = activeFilter.value; + return acc; + }, + {} + ); + }, [view.filters]); + const handleChange = (0, import_compose9.useEvent)((updatedData) => { + if (!field || !currentFilter) { + return; + } + const nextValue = field.getValue({ item: updatedData }); + if ((0, import_es6.default)(nextValue, currentValue)) { + return; + } + onChangeView({ + ...view, + filters: (view.filters ?? []).map( + (_filter) => _filter.field === filter.field ? { + ..._filter, + operator: currentFilter.operator || filter.operators[0], + // Consider empty strings as undefined: + // + // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records + // - empty string as value means "search empty string": returns only the records that have an empty string as value + // + // In practice, this means the filter will not be able to find an empty string as the value. + value: nextValue === "" ? void 0 : nextValue + } : _filter + ) + }); + }); + if (!field || !field.Edit || !currentFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + import_components20.Flex, + { + className: "dataviews-filters__user-input-widget", + gap: 2.5, + direction: "column", + children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( + field.Edit, + { + hideLabelFromVision: true, + data, + field, + operator: currentFilter.operator, + onChange: handleChange + } + ) + } + ); +} + +// packages/dataviews/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); + +// packages/dataviews/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} + +// packages/dataviews/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} + +// packages/dataviews/node_modules/date-fns/addDays.js +function addDays(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) return _date; + _date.setDate(_date.getDate() + amount); + return _date; +} + +// packages/dataviews/node_modules/date-fns/addMonths.js +function addMonths(date, amount, options) { + const _date = toDate(date, options?.in); + if (isNaN(amount)) return constructFrom(options?.in || date, NaN); + if (!amount) { + return _date; + } + const dayOfMonth = _date.getDate(); + const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); + endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); + const daysInMonth = endOfDesiredMonth.getDate(); + if (dayOfMonth >= daysInMonth) { + return endOfDesiredMonth; + } else { + _date.setFullYear( + endOfDesiredMonth.getFullYear(), + endOfDesiredMonth.getMonth(), + dayOfMonth + ); + return _date; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} + +// packages/dataviews/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} + +// packages/dataviews/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} + +// packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} + +// packages/dataviews/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} + +// packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} + +// packages/dataviews/node_modules/date-fns/addWeeks.js +function addWeeks(date, amount, options) { + return addDays(date, amount * 7, options); +} + +// packages/dataviews/node_modules/date-fns/addYears.js +function addYears(date, amount, options) { + return addMonths(date, amount * 12, options); +} + +// packages/dataviews/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} + +// packages/dataviews/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} + +// packages/dataviews/node_modules/date-fns/startOfMonth.js +function startOfMonth(date, options) { + const _date = toDate(date, options?.in); + _date.setDate(1); + _date.setHours(0, 0, 0, 0); + return _date; +} + +// packages/dataviews/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = (token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format6 = args.formats[width] || args.formats[args.defaultWidth]; + return format6; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = (dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}; +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: (quarter) => quarter - 1 + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} + +// packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} + +// packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: (value) => parseInt(value, 10) + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: (index) => index + 1 + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// packages/dataviews/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// packages/dataviews/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} + +// packages/dataviews/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} + +// packages/dataviews/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} + +// packages/dataviews/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} + +// packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// packages/dataviews/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, + // Year + y: function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone quarter + q: function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, + // Month + M: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, + // Stand-alone month + L: function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, + // Local week of year + w: function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Local day of week + e: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // Stand-alone local day of week + c: function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, + // ISO day of week + i: function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, + // AM or PM + a: function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // AM, PM, midnight, noon + b: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, + // Hour [1-12] + h: function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (GMT) + O: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Timezone (specific non-location) + z: function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, + // Seconds timestamp + t: function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + } +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} + +// packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}; +var timeLongFormatter = (pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}; +var dateTimeLongFormatter = (pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +function warnOrThrowProtectedError(token, format6, input) { + const _message = message(token, format6, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +function message(token, format6, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} + +// packages/dataviews/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} + +// packages/dataviews/node_modules/date-fns/subDays.js +function subDays(date, amount, options) { + return addDays(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subMonths.js +function subMonths(date, amount, options) { + return addMonths(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subWeeks.js +function subWeeks(date, amount, options) { + return addWeeks(date, -amount, options); +} + +// packages/dataviews/node_modules/date-fns/subYears.js +function subYears(date, amount, options) { + return addYears(date, -amount, options); +} + +// packages/dataviews/build-module/utils/operators.mjs +var import_i18n23 = __toESM(require_i18n(), 1); +var import_element26 = __toESM(require_element(), 1); +var import_date = __toESM(require_date(), 1); +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); +var filterTextWrappers = { + Name: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), + Value: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) +}; +function getRelativeDate(value, unit) { + switch (unit) { + case "days": + return subDays(/* @__PURE__ */ new Date(), value); + case "weeks": + return subWeeks(/* @__PURE__ */ new Date(), value); + case "months": + return subMonths(/* @__PURE__ */ new Date(), value); + case "years": + return subYears(/* @__PURE__ */ new Date(), value); + default: + return /* @__PURE__ */ new Date(); + } +} +var isNoneOperatorDefinition = { + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is none of"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ + (0, import_i18n23.__)("%1$s is none of: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter: ((item, field, filterValue) => { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return !filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return !filterValue.includes(fieldValue); + } + return false; + }), + selection: "multi" +}; +var OPERATORS = [ + { + name: OPERATOR_IS_ANY, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + const fieldValue = field.getValue({ item }); + if (Array.isArray(fieldValue)) { + return filterValue.some( + (fv) => fieldValue.includes(fv) + ); + } else if (typeof fieldValue === "string") { + return filterValue.includes(fieldValue); + } + return false; + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NONE, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_IS_ALL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Includes all"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ + (0, import_i18n23.__)("%1$s includes all: %2$s"), + filter.name, + activeElements.map((element) => element.label).join(", ") + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!filterValue?.length) { + return true; + } + return filterValue.every((value) => { + return field.getValue({ item })?.includes(value); + }); + }, + selection: "multi" + }, + { + name: OPERATOR_IS_NOT_ALL, + ...isNoneOperatorDefinition + }, + { + name: OPERATOR_BETWEEN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Between (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ + (0, import_i18n23.__)( + "%1$s between (inc): %2$s and %3$s" + ), + filter.name, + activeElements[0].label[0], + activeElements[0].label[1] + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { + return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; + } + return false; + }, + selection: "custom" + }, + { + name: OPERATOR_IN_THE_PAST, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("In the past"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ + (0, import_i18n23.__)( + "%1$s is in the past: %2$s" + ), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); + }, + selection: "custom" + }, + { + name: OPERATOR_OVER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Over"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ + (0, import_i18n23.__)("%1$s is over: %2$s"), + filter.name, + `${activeElements[0].value.value} ${activeElements[0].value.unit}` + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue?.value === void 0 || filterValue?.unit === void 0) { + return true; + } + const targetDate = getRelativeDate( + filterValue.value, + filterValue.unit + ); + const fieldValue = (0, import_date.getDate)(field.getValue({ item })); + return fieldValue < targetDate; + }, + selection: "custom" + }, + { + name: OPERATOR_IS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue === field.getValue({ item }) || filterValue === void 0; + }, + selection: "single" + }, + { + name: OPERATOR_IS_NOT, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Is not"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + return filterValue !== field.getValue({ item }); + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ + (0, import_i18n23.__)("%1$s is less than: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue < filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue > filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_LESS_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Less than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is less than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue <= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_GREATER_THAN_OR_EQUAL, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Greater than or equal"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ + (0, import_i18n23.__)( + "%1$s is greater than or equal to: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return fieldValue >= filterValue; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is before: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate < filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is after: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate > filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_BEFORE_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Before (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or before: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate <= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_AFTER_INC, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("After (inc)"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ + (0, import_i18n23.__)( + "%1$s is on or after: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return fieldDate >= filterDate; + }, + selection: "single" + }, + { + name: OPERATOR_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Contains"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ + (0, import_i18n23.__)("%1$s contains: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_CONTAINS, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Doesn't contain"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ + (0, import_i18n23.__)( + "%1$s doesn't contain: %2$s" + ), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_STARTS_WITH, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Starts with"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ + (0, import_i18n23.__)("%1$s starts with: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const fieldValue = field.getValue({ item }); + return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); + }, + selection: "single" + }, + { + name: OPERATOR_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("On"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() === fieldDate.getTime(); + }, + selection: "single" + }, + { + name: OPERATOR_NOT_ON, + /* translators: DataViews operator name */ + label: (0, import_i18n23.__)("Not on"), + filterText: (filter, activeElements) => (0, import_element26.createInterpolateElement)( + (0, import_i18n23.sprintf)( + /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ + (0, import_i18n23.__)("%1$s is not: %2$s"), + filter.name, + activeElements[0].label + ), + filterTextWrappers + ), + filter(item, field, filterValue) { + if (filterValue === void 0) { + return true; + } + const filterDate = (0, import_date.getDate)(filterValue); + const fieldDate = (0, import_date.getDate)(field.getValue({ item })); + return filterDate.getTime() !== fieldDate.getTime(); + }, + selection: "single" + } +]; +var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name); +var getAllOperatorNames = () => OPERATORS.map((op) => op.name); +var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some( + (op) => op.name === name +); +var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name); + +// packages/dataviews/build-module/components/dataviews-filters/filter.mjs +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +var ENTER = "Enter"; +var SPACE = " "; +var FilterText = ({ + activeElements, + filterInView, + filter +}) => { + if (activeElements === void 0 || activeElements.length === 0) { + return filter.name; + } + const operator = getOperatorByName(filterInView?.operator); + if (operator !== void 0) { + return operator.filterText(filter, activeElements); + } + return (0, import_i18n24.sprintf)( + /* translators: 1: Filter name e.g.: "Unknown status for Author". */ + (0, import_i18n24.__)("Unknown status for %1$s"), + filter.name + ); +}; +function OperatorSelector({ + filter, + view, + onChangeView +}) { + const operatorOptions = filter.operators?.map((operator) => ({ + value: operator, + label: getOperatorByName(operator)?.label || operator + })); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const value = currentFilter?.operator || filter.operators[0]; + return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "flex-start", + className: "dataviews-filters__summary-operators-container", + align: "center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_components21.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + import_components21.SelectControl, + { + className: "dataviews-filters__summary-operators-filter-select", + label: (0, import_i18n24.__)("Conditions"), + value, + options: operatorOptions, + onChange: (newValue) => { + const newOperator = newValue; + const currentOperator = currentFilter?.operator; + const newFilters = currentFilter ? [ + ...(view.filters ?? []).map( + (_filter) => { + if (_filter.field === filter.field) { + const currentOpSelectionModel = getOperatorByName( + currentOperator + )?.selection; + const newOpSelectionModel = getOperatorByName( + newOperator + )?.selection; + const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ + currentOpSelectionModel, + newOpSelectionModel + ].includes("custom"); + return { + ..._filter, + value: shouldResetValue ? void 0 : _filter.value, + operator: newOperator + }; + } + return _filter; + } + ) + ] : [ + ...view.filters ?? [], + { + field: filter.field, + operator: newOperator, + value: void 0 + } + ]; + onChangeView({ + ...view, + page: 1, + filters: newFilters + }); + }, + size: "small", + variant: "minimal", + hideLabelFromVision: true + } + ) + ] + } + ); +} +function Filter({ + addFilterRef, + openedFilter, + fields, + ...commonProps +}) { + const toggleRef = (0, import_element27.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element27.useMemo)(() => { + const currentField = fields.find((f2) => f2.id === filter.field); + if (currentField) { + return { + ...currentField, + // Configure getValue as if Item was a plain object. + // See related input-widget.tsx + getValue: ({ item }) => item[currentField.id] + }; + } + return currentField; + }, [fields, filter.field]); + const { elements } = useElements({ + elements: filter.elements, + getElements: filter.getElements + }); + if (elements.length > 0) { + activeElements = elements.filter((element) => { + if (filter.singleSelection) { + return element.value === filterInView?.value; + } + return filterInView?.value?.includes(element.value); + }); + } else if (Array.isArray(filterInView?.value)) { + const label = filterInView.value.map((v2) => { + const formattedValue = field?.getValueFormatted({ + item: { [field.id]: v2 }, + field + }); + return formattedValue || String(v2); + }); + activeElements = [ + { + value: filterInView.value, + // @ts-ignore + label + } + ]; + } else if (typeof filterInView?.value === "object") { + activeElements = [ + { value: filterInView.value, label: filterInView.value } + ]; + } else if (filterInView?.value !== void 0) { + const label = field !== void 0 ? field.getValueFormatted({ + item: { [field.id]: filterInView.value }, + field + }) : String(filterInView.value); + activeElements = [ + { + value: filterInView.value, + label + } + ]; + } + const isPrimary = filter.isPrimary; + const isLocked = filterInView?.isLocked; + const hasValues = !isLocked && filterInView?.value !== void 0; + const canResetOrRemove = !isLocked && (!isPrimary || hasValues); + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + import_components21.Dropdown, + { + defaultOpen: openedFilter === filter.field, + contentClassName: "dataviews-filters__summary-popover", + popoverProps: { placement: "bottom-start", role: "dialog" }, + onClose: () => { + toggleRef.current?.focus(); + }, + renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + import_components21.Tooltip, + { + text: (0, import_i18n24.sprintf)( + /* translators: 1: Filter name. */ + (0, import_i18n24.__)("Filter by: %1$s"), + filter.name.toLowerCase() + ), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + "div", + { + className: clsx_default( + "dataviews-filters__summary-chip", + { + "has-reset": canResetOrRemove, + "has-values": hasValues, + "is-not-clickable": isLocked + } + ), + role: "button", + tabIndex: isLocked ? -1 : 0, + onClick: () => { + if (!isLocked) { + onToggle(); + } + }, + onKeyDown: (event) => { + if (!isLocked && [ENTER, SPACE].includes(event.key)) { + onToggle(); + event.preventDefault(); + } + }, + "aria-disabled": isLocked, + "aria-pressed": isOpen, + "aria-expanded": isOpen, + ref: toggleRef, + children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + FilterText, + { + activeElements, + filterInView, + filter + } + ) + } + ) + } + ), + canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + import_components21.Tooltip, + { + text: isPrimary ? (0, import_i18n24.__)("Reset") : (0, import_i18n24.__)("Remove"), + placement: "top", + children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + "button", + { + className: clsx_default( + "dataviews-filters__summary-chip-remove", + { "has-values": hasValues } + ), + onClick: () => { + onChangeView({ + ...view, + page: 1, + filters: view.filters?.filter( + (_filter) => _filter.field !== filter.field + ) + }); + if (!isPrimary) { + addFilterRef.current?.focus(); + } else { + toggleRef.current?.focus(); + } + }, + children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_components21.Icon, { icon: close_small_default }) + } + ) + } + ) + ] }), + renderContent: () => { + return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(OperatorSelector, { ...commonProps }), + commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( + SearchWidget, + { + ...commonProps, + filter: { + ...commonProps.filter, + elements + } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(InputWidget, { ...commonProps, fields }) + ] }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs +var import_components22 = __toESM(require_components(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); +var import_element28 = __toESM(require_element(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock(import_components22.privateApis); +function AddFilterMenu({ + filters, + view, + onChangeView, + setOpenedFilter, + triggerProps +}) { + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Menu4, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Menu4.TriggerButton, { ...triggerProps }), + /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Menu4.Popover, { children: inactiveFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + Menu4.Item, + { + onClick: () => { + setOpenedFilter(filter.field); + onChangeView({ + ...view, + page: 1, + filters: [ + ...view.filters || [], + { + field: filter.field, + value: void 0, + operator: filter.operators[0] + } + ] + }); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Menu4.ItemLabel, { children: filter.name }) + }, + filter.field + ); + }) }) + ] }); +} +function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { + if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { + return null; + } + const inactiveFilters = filters.filter((filter) => !filter.isVisible); + return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + AddFilterMenu, + { + triggerProps: { + render: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + import_components22.Button, + { + accessibleWhenDisabled: true, + size: "compact", + className: "dataviews-filters-button", + variant: "tertiary", + disabled: !inactiveFilters.length, + ref + } + ), + children: (0, import_i18n25.__)("Add filter") + }, + ...{ filters, view, onChangeView, setOpenedFilter } + } + ); +} +var add_filter_default = (0, import_element28.forwardRef)(AddFilter); + +// packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs +var import_components23 = __toESM(require_components(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +function ResetFilter({ + filters, + view, + onChangeView +}) { + const isPrimary = (field) => filters.some( + (_filter) => _filter.field === field && _filter.isPrimary + ); + const isDisabled = !view.search && !view.filters?.some( + (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) + ); + return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + import_components23.Button, + { + disabled: isDisabled, + accessibleWhenDisabled: true, + size: "compact", + variant: "tertiary", + className: "dataviews-filters__reset-button", + onClick: () => { + onChangeView({ + ...view, + page: 1, + search: "", + filters: view.filters?.filter((f2) => !!f2.isLocked) || [] + }); + }, + children: (0, import_i18n26.__)("Reset") + } + ); +} + +// packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs +var import_element29 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element29.useMemo)(() => { + const filters = []; + fields.forEach((field) => { + if (field.filterBy === false || !field.hasElements && !field.Edit) { + return; + } + const operators = field.filterBy.operators; + const isPrimary = !!field.filterBy?.isPrimary; + const isLocked = view.filters?.some( + (f2) => f2.field === field.id && !!f2.isLocked + ) ?? false; + filters.push({ + field: field.id, + name: field.label, + elements: field.elements, + getElements: field.getElements, + hasElements: field.hasElements, + singleSelection: operators.some( + (op) => isSingleSelectionOperator(op) + ), + operators, + isVisible: isLocked || isPrimary || !!view.filters?.some( + (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) + ), + isPrimary, + isLocked + }); + }); + filters.sort((a2, b2) => { + if (a2.isLocked && !b2.isLocked) { + return -1; + } + if (!a2.isLocked && b2.isLocked) { + return 1; + } + if (a2.isPrimary && !b2.isPrimary) { + return -1; + } + if (!a2.isPrimary && b2.isPrimary) { + return 1; + } + return a2.name.localeCompare(b2.name); + }); + return filters; + }, [fields, view]); +} +var use_filters_default = useFilters; + +// packages/dataviews/build-module/components/dataviews-filters/filters.mjs +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +function Filters({ className }) { + const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element30.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element30.useRef)(null); + const filters = use_filters_default(fields, view); + const addFilter = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + add_filter_default, + { + filters, + view, + onChangeView, + ref: addFilterRef, + setOpenedFilter + }, + "add-filter" + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + if (visibleFilters.length === 0) { + return null; + } + const filterComponents = [ + ...visibleFilters.map((filter) => { + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + Filter, + { + filter, + view, + fields, + onChangeView, + addFilterRef, + openedFilter + }, + filter.field + ); + }), + addFilter + ]; + filterComponents.push( + /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + ResetFilter, + { + filters, + view, + onChangeView + }, + "reset-filters" + ) + ); + return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + Stack, + { + direction: "row", + justify: "flex-start", + gap: "sm", + style: { width: "fit-content" }, + wrap: "wrap", + className, + children: filterComponents + } + ); +} +var filters_default = (0, import_element30.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element31 = __toESM(require_element(), 1); +var import_components24 = __toESM(require_components(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +function FiltersToggle() { + const { + filters, + view, + onChangeView, + setOpenedFilter, + isShowingFilter, + setIsShowingFilter + } = (0, import_element31.useContext)(dataviews_context_default); + const buttonRef = (0, import_element31.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element31.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + const visibleFilters = filters.filter((filter) => filter.isVisible); + const hasVisibleFilters = !!visibleFilters.length; + if (filters.length === 0) { + return null; + } + const addFilterButtonProps = { + label: (0, import_i18n27.__)("Add filter"), + "aria-expanded": false, + isPressed: false + }; + const toggleFiltersButtonProps = { + label: (0, import_i18n27._x)("Filter", "verb"), + "aria-expanded": isShowingFilter, + isPressed: isShowingFilter, + onClick: () => { + if (!isShowingFilter) { + setOpenedFilter(null); + } + setIsShowingFilter(!isShowingFilter); + } + }; + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps + } + ); + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + AddFilterMenu, + { + filters, + view, + onChangeView: onChangeViewWithFilterVisibility, + setOpenedFilter, + triggerProps: { render: buttonComponent } + } + ) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + FilterVisibilityToggle, + { + buttonRef, + filtersCount: view.filters?.length, + children: buttonComponent + } + ) }); +} +function FilterVisibilityToggle({ + buttonRef, + filtersCount, + children +}) { + (0, import_element31.useEffect)( + () => () => { + buttonRef.current?.focus(); + }, + [buttonRef] + ); + return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [ + children, + !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) + ] }); +} +var toggle_default = FiltersToggle; + +// packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs +var import_element32 = __toESM(require_element(), 1); +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element32.useContext)(dataviews_context_default); + if (!isShowingFilter) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(filters_default, { ...props }); +} +var filters_toggled_default = FiltersToggled; + +// packages/dataviews/build-module/components/dataviews-layout/index.mjs +var import_element33 = __toESM(require_element(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading, + view, + onChangeView, + selection, + onChangeSelection, + setOpenedFilter, + onClickItem, + isItemClickable, + renderItemLink, + defaultLayouts, + empty = /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { children: (0, import_i18n28.__)("No results") }) + } = (0, import_element33.useContext)(dataviews_context_default); + const ViewComponent = VIEW_LAYOUTS.find( + (v2) => v2.type === view.type && defaultLayouts[v2.type] + )?.component; + return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + ViewComponent, + { + className, + actions, + data, + fields, + getItemId: getItemId2, + getItemLevel, + isLoading, + onChangeView, + onChangeSelection, + selection, + setOpenedFilter, + onClickItem, + renderItemLink, + isItemClickable, + view, + empty + } + ); +} + +// packages/dataviews/build-module/components/dataviews-footer/index.mjs +var import_element34 = __toESM(require_element(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var EMPTY_ARRAY5 = []; +function DataViewsFooter() { + const { + view, + paginationInfo: { totalItems = 0, totalPages }, + data, + actions = EMPTY_ARRAY5 + } = (0, import_element34.useContext)(dataviews_context_default); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) { + return null; + } + return !!totalItems && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: "dataviews-footer", + gap: "sm", + children: [ + hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(BulkActionsFooter, {}), + /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(dataviews_pagination_default, {}) + ] + } + ); +} + +// packages/dataviews/build-module/components/dataviews-search/index.mjs +var import_i18n29 = __toESM(require_i18n(), 1); +var import_element35 = __toESM(require_element(), 1); +var import_components25 = __toESM(require_components(), 1); +var import_compose10 = __toESM(require_compose(), 1); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +var DataViewsSearch = (0, import_element35.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element35.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element35.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element35.useRef)(onChangeView); + const viewRef = (0, import_element35.useRef)(view); + (0, import_element35.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element35.useEffect)(() => { + if (debouncedSearch !== viewRef.current?.search) { + onChangeViewRef.current({ + ...viewRef.current, + page: 1, + search: debouncedSearch + }); + } + }, [debouncedSearch]); + const searchLabel = label || (0, import_i18n29.__)("Search"); + return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( + import_components25.SearchControl, + { + className: "dataviews-search", + onChange: setSearch, + value: search, + label: searchLabel, + placeholder: searchLabel, + size: "compact" + } + ); +}); +var dataviews_search_default = DataViewsSearch; + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_components27 = __toESM(require_components(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_warning = __toESM(require_warning(), 1); +var import_compose11 = __toESM(require_compose(), 1); + +// packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +var import_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element36.useContext)(dataviews_context_default); + const { view, onChangeView } = context; + const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; + if (!context.hasInfiniteScrollHandler) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components26.ToggleControl, + { + label: (0, import_i18n30.__)("Enable infinite scroll"), + help: (0, import_i18n30.__)( + "Automatically load more content as you scroll, instead of showing pagination links." + ), + checked: infiniteScrollEnabled, + onChange: (newValue) => { + onChangeView({ + ...view, + infiniteScrollEnabled: newValue + }); + } + } + ); +} + +// packages/dataviews/build-module/components/dataviews-view-config/index.mjs +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu5 } = unlock(import_components27.privateApis); +var DATAVIEWS_CONFIG_POPOVER_PROPS = { + className: "dataviews-config__popover", + placement: "bottom-end", + offset: 9 +}; +function ViewTypeMenu() { + const { view, onChangeView, defaultLayouts } = (0, import_element37.useContext)(dataviews_context_default); + const availableLayouts = Object.keys(defaultLayouts); + if (availableLayouts.length <= 1) { + return null; + } + const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); + return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Menu5, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + Menu5.TriggerButton, + { + render: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.Button, + { + size: "compact", + icon: activeView?.icon, + label: (0, import_i18n31.__)("Layout") + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Menu5.Popover, { children: availableLayouts.map((layout) => { + const config = VIEW_LAYOUTS.find( + (v2) => v2.type === layout + ); + if (!config) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + Menu5.RadioItem, + { + value: layout, + name: "view-actions-available-view", + checked: layout === view.type, + hideOnClick: true, + onChange: (e2) => { + switch (e2.target.value) { + case "list": + case "grid": + case "table": + case "pickerGrid": + case "pickerTable": + case "activity": + const viewWithoutLayout = { ...view }; + if ("layout" in viewWithoutLayout) { + delete viewWithoutLayout.layout; + } + return onChangeView({ + ...viewWithoutLayout, + type: e2.target.value, + ...defaultLayouts[e2.target.value] + }); + } + (0, import_warning.default)("Invalid dataview"); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Menu5.ItemLabel, { children: config.label }) + }, + layout + ); + }) }) + ] }); +} +function SortFieldControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const orderOptions = (0, import_element37.useMemo)(() => { + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + return sortableFields.map((field) => { + return { + label: field.label, + value: field.id + }; + }); + }, [fields]); + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.SelectControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n31.__)("Sort by"), + value: view.sort?.field, + options: orderOptions, + onChange: (value) => { + onChangeView({ + ...view, + sort: { + direction: view?.sort?.direction || "desc", + field: value + }, + showLevels: false + }); + } + } + ); +} +function SortDirectionControl() { + const { view, fields, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const sortableFields = fields.filter( + (field) => field.enableSorting !== false + ); + if (sortableFields.length === 0) { + return null; + } + let value = view.sort?.direction; + if (!value && view.sort?.field) { + value = "desc"; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalToggleGroupControl, + { + className: "dataviews-view-config__sort-direction", + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Order"), + value, + onChange: (newDirection) => { + if (newDirection === "asc" || newDirection === "desc") { + onChangeView({ + ...view, + sort: { + direction: newDirection, + field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. + fields.find( + (field) => field.enableSorting !== false + )?.id || "" + }, + showLevels: false + }); + return; + } + (0, import_warning.default)("Invalid direction"); + }, + children: SORTING_DIRECTIONS.map((direction) => { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalToggleGroupControlOptionIcon, + { + value: direction, + icon: sortIcons[direction], + label: sortLabels[direction] + }, + direction + ); + }) + } + ); +} +function ItemsPerPageControl() { + const { view, config, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const { infiniteScrollEnabled } = view; + if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalToggleGroupControl, + { + __next40pxDefaultSize: true, + isBlock: true, + label: (0, import_i18n31.__)("Items per page"), + value: view.perPage || 10, + disabled: !view?.sort?.field, + onChange: (newItemsPerPage) => { + const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); + onChangeView({ + ...view, + perPage: newItemsPerPageNumber, + page: 1 + }); + }, + children: config.perPageSizes.map((value) => { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalToggleGroupControlOption, + { + value, + label: value.toString() + }, + value + ); + }) + } + ); +} +function SettingsSection({ + title, + description, + children +}) { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_components27.__experimentalGrid, { columns: 12, className: "dataviews-settings-section", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "dataviews-settings-section__sidebar", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: title + } + ), + description && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalText, + { + variant: "muted", + className: "dataviews-settings-section__description", + children: description + } + ) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalGrid, + { + columns: 8, + gap: 4, + className: "dataviews-settings-section__content", + children + } + ) + ] }); +} +function DataviewsViewConfigDropdown() { + const { view } = (0, import_element37.useContext)(dataviews_context_default); + const popoverId = (0, import_compose11.useInstanceId)( + _DataViewsViewConfig, + "dataviews-view-config-dropdown" + ); + const activeLayout = VIEW_LAYOUTS.find( + (layout) => layout.type === view.type + ); + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.Dropdown, + { + expandOnMobile: true, + popoverProps: { + ...DATAVIEWS_CONFIG_POPOVER_PROPS, + id: popoverId + }, + renderToggle: ({ onToggle, isOpen }) => { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.Button, + { + size: "compact", + icon: cog_default, + label: (0, import_i18n31._x)("View options", "View is used as a noun"), + onClick: onToggle, + "aria-expanded": isOpen ? "true" : "false", + "aria-controls": popoverId + } + ); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(SettingsSection, { title: (0, import_i18n31.__)("Appearance"), children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "is-divided-in-two", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(SortFieldControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(SortDirectionControl, {}) + ] + } + ), + !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(activeLayout.viewConfigOptions, {}), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(InfiniteScrollToggle, {}), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ItemsPerPageControl, {}), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(PropertiesSection, {}) + ] }) + } + ) + } + ) + } + ); +} +function _DataViewsViewConfig() { + return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_jsx_runtime72.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ViewTypeMenu, {}), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(DataviewsViewConfigDropdown, {}) + ] }); +} +var DataViewsViewConfig = (0, import_element37.memo)(_DataViewsViewConfig); +var dataviews_view_config_default = DataViewsViewConfig; + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_components28 = __toESM(require_components(), 1); +var import_element38 = __toESM(require_element(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs +function getCustomValidity(isValid2, validity) { + let customValidity; + if (isValid2?.required && validity?.required) { + customValidity = validity?.required?.message ? validity.required : void 0; + } else if (isValid2?.pattern && validity?.pattern) { + customValidity = validity.pattern; + } else if (isValid2?.min && validity?.min) { + customValidity = validity.min; + } else if (isValid2?.max && validity?.max) { + customValidity = validity.max; + } else if (isValid2?.minLength && validity?.minLength) { + customValidity = validity.minLength; + } else if (isValid2?.maxLength && validity?.maxLength) { + customValidity = validity.maxLength; + } else if (isValid2?.elements && validity?.elements) { + customValidity = validity.elements; + } else if (validity?.custom) { + customValidity = validity.custom; + } + return customValidity; +} + +// packages/dataviews/build-module/components/dataform-controls/checkbox.mjs +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedCheckboxControl } = unlock(import_components28.privateApis); +function Checkbox({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, label, description, isValid: isValid2 } = field; + const onChangeControl = (0, import_element38.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [data, getValue, onChange, setValue]); + return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( + ValidatedCheckboxControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/combobox.mjs +var import_components29 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var { ValidatedComboboxControl } = unlock(import_components29.privateApis); +function Combobox3({ + data, + field, + onChange, + hideLabelFromVision, + validity +}) { + const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element39.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components29.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( + ValidatedComboboxControl, + { + required: !!field.isValid?.required, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + placeholder, + options: elements, + onChange: onChangeControl, + hideLabelFromVision, + allowReset: true, + expandOnFocus: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_components31 = __toESM(require_components(), 1); +var import_element41 = __toESM(require_element(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_date3 = __toESM(require_date(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs +var import_components30 = __toESM(require_components(), 1); +var import_element40 = __toESM(require_element(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var TIME_UNITS_OPTIONS = { + [OPERATOR_IN_THE_PAST]: [ + { value: "days", label: (0, import_i18n32.__)("Days") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks") }, + { value: "months", label: (0, import_i18n32.__)("Months") }, + { value: "years", label: (0, import_i18n32.__)("Years") } + ], + [OPERATOR_OVER]: [ + { value: "days", label: (0, import_i18n32.__)("Days ago") }, + { value: "weeks", label: (0, import_i18n32.__)("Weeks ago") }, + { value: "months", label: (0, import_i18n32.__)("Months ago") }, + { value: "years", label: (0, import_i18n32.__)("Years ago") } + ] +}; +function RelativeDateControl({ + className, + data, + field, + onChange, + hideLabelFromVision, + operator +}) { + const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; + const { id, label, getValue, setValue } = field; + const fieldValue = getValue({ item: data }); + const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; + const onChangeValue = (0, import_element40.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element40.useCallback)( + (newUnit) => onChange( + setValue({ + item: data, + value: { value: relValue, unit: newUnit } + }) + ), + [onChange, setValue, data, relValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + import_components30.BaseControl, + { + id, + className: clsx_default(className, "dataviews-controls__relative-date"), + label, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Stack, { direction: "row", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + import_components30.__experimentalNumberControl, + { + __next40pxDefaultSize: true, + className: "dataviews-controls__relative-date-number", + spinControls: "none", + min: 1, + step: 1, + value: relValue, + onChange: onChangeValue + } + ), + /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( + import_components30.SelectControl, + { + className: "dataviews-controls__relative-date-unit", + __next40pxDefaultSize: true, + label: (0, import_i18n32.__)("Unit"), + value: unit, + options, + onChange: onChangeUnit, + hideLabelFromVision: true + } + ) + ] }) + } + ); +} + +// packages/dataviews/build-module/field-types/utils/parse-date-time.mjs +var import_date2 = __toESM(require_date(), 1); +function parseDateTime(dateTimeString) { + if (!dateTimeString) { + return null; + } + const parsed = (0, import_date2.getDate)(dateTimeString); + return parsed && isValid(parsed) ? parsed : null; +} + +// packages/dataviews/build-module/components/dataform-controls/datetime.mjs +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar, ValidatedInputControl } = unlock(import_components31.privateApis); +var formatDateTime = (date) => { + if (!date) { + return ""; + } + if (typeof date === "string") { + return date; + } + return format(date, "yyyy-MM-dd'T'HH:mm"); +}; +function CalendarDateTimeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, description, setValue, getValue, isValid: isValid2 } = field; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element41.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element41.useRef)(null); + const validationTimeoutRef = (0, import_element41.useRef)(); + const previousFocusRef = (0, import_element41.useRef)(null); + const onChangeCallback = (0, import_element41.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element41.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element41.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + let finalDateTime = newDate; + if (value) { + const currentDateTime = parseDateTime(value); + if (currentDateTime) { + finalDateTime = new Date(newDate); + finalDateTime.setHours(currentDateTime.getHours()); + finalDateTime.setMinutes( + currentDateTime.getMinutes() + ); + } + } + dateTimeValue = finalDateTime.toISOString(); + onChangeCallback(dateTimeValue); + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + } else { + onChangeCallback(void 0); + } + previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; + validationTimeoutRef.current = setTimeout(() => { + if (inputControlRef.current) { + inputControlRef.current.focus(); + inputControlRef.current.blur(); + onChangeCallback(dateTimeValue); + if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { + previousFocusRef.current.focus(); + } + } + }, 0); + }, + [onChangeCallback, value] + ); + const handleManualDateTimeChange = (0, import_element41.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = new Date(newValue); + onChangeCallback(dateTime.toISOString()); + const parsedDate = parseDateTime(dateTime.toISOString()); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } else { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const { format: fieldFormat } = field; + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date3.getSettings)().l10n.startOfWeek; + const { + timezone: { string: timezoneString } + } = (0, import_date3.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { + displayLabel = `${label} (${(0, import_i18n33.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + import_components31.BaseControl, + { + id, + label: displayLabel, + help: description, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + DateCalendar, + { + style: { width: "100%" }, + selected: value ? parseDateTime(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ), + /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedInputControl, + { + ref: inputControlRef, + __next40pxDefaultSize: true, + required: !!isValid2?.required, + customValidity: getCustomValidity(isValid2, validity), + type: "datetime-local", + label: (0, import_i18n33.__)("Date time"), + hideLabelFromVision: true, + value: value ? formatDateTime( + parseDateTime(value) || void 0 + ) : "", + onChange: handleManualDateTimeChange + } + ) + ] }) + } + ); +} +function DateTime({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__datetime", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + CalendarDateTimeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/date.mjs +var import_components32 = __toESM(require_components(), 1); +var import_element42 = __toESM(require_element(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); +var import_date4 = __toESM(require_date(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock(import_components32.privateApis); +var DATE_PRESETS = [ + { + id: "today", + label: (0, import_i18n34.__)("Today"), + getValue: () => (0, import_date4.getDate)(null) + }, + { + id: "yesterday", + label: (0, import_i18n34.__)("Yesterday"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 1); + } + }, + { + id: "past-week", + label: (0, import_i18n34.__)("Past week"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subDays(today, 7); + } + }, + { + id: "past-month", + label: (0, import_i18n34.__)("Past month"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return subMonths(today, 1); + } + } +]; +var DATE_RANGE_PRESETS = [ + { + id: "last-7-days", + label: (0, import_i18n34.__)("Last 7 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 7), today]; + } + }, + { + id: "last-30-days", + label: (0, import_i18n34.__)("Last 30 days"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subDays(today, 30), today]; + } + }, + { + id: "month-to-date", + label: (0, import_i18n34.__)("Month to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfMonth(today), today]; + } + }, + { + id: "last-year", + label: (0, import_i18n34.__)("Last year"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [subYears(today, 1), today]; + } + }, + { + id: "year-to-date", + label: (0, import_i18n34.__)("Year to date"), + getValue: () => { + const today = (0, import_date4.getDate)(null); + return [startOfYear(today), today]; + } + } +]; +var parseDate = (dateString) => { + if (!dateString) { + return null; + } + const parsed = (0, import_date4.getDate)(dateString); + return parsed && isValid(parsed) ? parsed : null; +}; +var formatDate = (date) => { + if (!date) { + return ""; + } + return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); +}; +function ValidatedDateControl({ + field, + validity, + inputRefs, + isTouched, + setIsTouched, + children +}) { + const { isValid: isValid2 } = field; + const [customValidity, setCustomValidity] = (0, import_element42.useState)(void 0); + const validateRefs = (0, import_element42.useCallback)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + for (const ref of refs) { + const input = ref.current; + if (input && !input.validity.valid) { + setCustomValidity({ + type: "invalid", + message: input.validationMessage + }); + return; + } + } + setCustomValidity(void 0); + }, [inputRefs]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + for (const ref of refs) { + const input = ref.current; + if (input) { + input.setCustomValidity( + result?.type === "invalid" && result.message ? result.message : "" + ); + } + } + }, [inputRefs, isValid2, validity]); + (0, import_element42.useEffect)(() => { + const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; + const handleInvalid = (event) => { + event.preventDefault(); + setIsTouched(true); + }; + for (const ref of refs) { + ref.current?.addEventListener("invalid", handleInvalid); + } + return () => { + for (const ref of refs) { + ref.current?.removeEventListener("invalid", handleInvalid); + } + }; + }, [inputRefs, setIsTouched]); + (0, import_element42.useEffect)(() => { + if (!isTouched) { + return; + } + const result = validity ? getCustomValidity(isValid2, validity) : void 0; + if (result) { + setCustomValidity(result); + } else { + validateRefs(); + } + }, [isTouched, isValid2, validity, validateRefs]); + const onBlur = (event) => { + if (isTouched) { + return; + } + if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { + setIsTouched(true); + } + }; + return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { onBlur, children: [ + children, + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( + "p", + { + className: clsx_default( + "components-validated-control__indicator", + customValidity.type === "invalid" ? "is-invalid" : void 0 + ), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.Icon, + { + className: "components-validated-control__indicator-icon", + icon: error_default, + size: 16, + fill: "currentColor" + } + ), + customValidity.message + ] + } + ) }) + ] }); +} +function CalendarDateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { + id, + label, + setValue, + getValue, + isValid: isValid2, + format: fieldFormat + } = field; + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const fieldValue = getValue({ item: data }); + const value = typeof fieldValue === "string" ? fieldValue : void 0; + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const validityTargetRef = (0, import_element42.useRef)(null); + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element42.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (newValue) => { + onChangeCallback(newValue); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const { + timezone: { string: timezoneString } + } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (isValid2?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!isValid2?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: validityTargetRef, + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + disabled: !!selectedPresetId, + accessibleWhenDisabled: false, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: validityTargetRef, + type: "date", + label: (0, import_i18n34.__)("Date"), + hideLabelFromVision: true, + value, + onChange: handleManualDateChange, + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + DateCalendar2, + { + style: { width: "100%" }, + selected: value ? parseDate(value) || void 0 : void 0, + onSelect: onSelectDate, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezoneString || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function CalendarDateRangeControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { id, label, getValue, setValue, format: fieldFormat } = field; + let value; + const fieldValue = getValue({ item: data }); + if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { + value = fieldValue; + } + const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; + const onChangeCallback = (0, import_element42.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element42.useState)( + null + ); + const selectedRange = (0, import_element42.useMemo)(() => { + if (!value) { + return { from: void 0, to: void 0 }; + } + const [from, to] = value; + return { + from: parseDate(from) || void 0, + to: parseDate(to) || void 0 + }; + }, [value]); + const [calendarMonth, setCalendarMonth] = (0, import_element42.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element42.useState)(false); + const fromInputRef = (0, import_element42.useRef)(null); + const toInputRef = (0, import_element42.useRef)(null); + const updateDateRange = (0, import_element42.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element42.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element42.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element42.useCallback)( + (fromOrTo, newValue) => { + const [currentFrom, currentTo] = value || [ + void 0, + void 0 + ]; + const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; + const updatedTo = fromOrTo === "to" ? newValue : currentTo; + updateDateRange(updatedFrom, updatedTo); + if (newValue) { + const parsedDate = parseDate(newValue); + if (parsedDate) { + setCalendarMonth(parsedDate); + } + } + setSelectedPresetId(null); + setIsTouched(true); + }, + [value, updateDateRange] + ); + const { timezone } = (0, import_date4.getSettings)(); + let displayLabel = label; + if (field.isValid?.required && !markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Required")})`; + } else if (!field.isValid?.required && markWhenOptional) { + displayLabel = `${label} (${(0, import_i18n34.__)("Optional")})`; + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedDateControl, + { + field, + validity, + inputRefs: [fromInputRef, toInputRef], + isTouched, + setIsTouched, + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.BaseControl, + { + id, + className: "dataviews-controls__date", + label: displayLabel, + hideLabelFromVision, + children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + wrap: "wrap", + justify: "flex-start", + children: [ + DATE_RANGE_PRESETS.map((preset) => { + const isSelected2 = selectedPresetId === preset.id; + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: isSelected2, + size: "small", + onClick: () => handlePresetClick(preset), + children: preset.label + }, + preset.id + ); + }), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.Button, + { + className: "dataviews-controls__date-preset", + variant: "tertiary", + isPressed: !selectedPresetId, + size: "small", + accessibleWhenDisabled: false, + disabled: !!selectedPresetId, + children: (0, import_i18n34.__)("Custom") + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + justify: "space-between", + className: "dataviews-controls__date-range-inputs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: fromInputRef, + type: "date", + label: (0, import_i18n34.__)("From"), + hideLabelFromVision: true, + value: value?.[0], + onChange: (newValue) => handleManualDateChange("from", newValue), + required: !!field.isValid?.required + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components32.__experimentalInputControl, + { + __next40pxDefaultSize: true, + ref: toInputRef, + type: "date", + label: (0, import_i18n34.__)("To"), + hideLabelFromVision: true, + value: value?.[1], + onChange: (newValue) => handleManualDateChange("to", newValue), + required: !!field.isValid?.required + } + ) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + DateRangeCalendar, + { + style: { width: "100%" }, + selected: selectedRange, + onSelect: onSelectCalendarRange, + month: calendarMonth, + onMonthChange: setCalendarMonth, + timeZone: timezone.string || void 0, + weekStartsOn + } + ) + ] }) + } + ) + } + ); +} +function DateControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + RelativeDateControl, + { + className: "dataviews-controls__date", + data, + field, + onChange, + hideLabelFromVision, + operator + } + ); + } + if (operator === OPERATOR_BETWEEN) { + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + CalendarDateRangeControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + CalendarDateControl, + { + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components34 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element43 = __toESM(require_element(), 1); +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components33.privateApis); +function ValidatedText({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + type, + prefix, + suffix, + validity +}) { + const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element43.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + ValidatedInputControl2, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + hideLabelFromVision, + type, + prefix, + suffix, + pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components34.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components34.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components35 = __toESM(require_components(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components35.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components36.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components37 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components37.privateApis); +function toNumberOrEmpty(value) { + if (value === "" || value === void 0) { + return ""; + } + const number = Number(value); + return Number.isFinite(number) ? number : ""; +} +function BetweenControls({ + value, + onChange, + hideLabelFromVision, + step +}) { + const [min = "", max = ""] = value; + const onChangeMin = (0, import_element44.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element44.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + import_components37.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_components37.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Min."), + value: min, + max: max ? Number(max) - step : void 0, + onChange: onChangeMin, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ), + /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + import_components37.__experimentalNumberControl, + { + label: (0, import_i18n35.__)("Max."), + value: max, + min: min ? Number(min) + step : void 0, + onChange: onChangeMax, + __next40pxDefaultSize: true, + hideLabelFromVision, + step + } + ) + ] }) + } + ); +} +function ValidatedNumber({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + operator, + validity +}) { + const decimals = field.format?.decimals ?? 0; + const step = Math.pow(10, Math.abs(decimals) * -1); + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }) ?? ""; + const onChangeControl = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + // Do not convert an empty string or undefined to a number, + // otherwise there's a mismatch between the UI control (empty) + // and the data relied by onChange (0). + value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) + }) + ); + }, + [data, onChange, setValue] + ); + const onChangeBetweenControls = (0, import_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + if (operator === OPERATOR_BETWEEN) { + let valueBetween = ["", ""]; + if (Array.isArray(value) && value.length === 2 && value.every( + (element) => typeof element === "number" || element === "" + )) { + valueBetween = value; + } + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + ValidatedNumberControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + value, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + step, + min: isValid2.min ? isValid2.min.constraint : void 0, + max: isValid2.max ? isValid2.max.constraint : void 0 + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/integer.mjs +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components38.privateApis); +function Radio({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = getValue({ item: data }); + const onChangeControl = (0, import_element45.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_components38.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + ValidatedRadioControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + help: description, + onChange: onChangeControl, + options: elements, + selected: value, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/select.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components39.privateApis); +function Select({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { type, label, description, getValue, setValue, isValid: isValid2 } = field; + const isMultiple = type === "array"; + const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); + const onChangeControl = (0, import_element46.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + ValidatedSelectControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + value, + help: description, + options: elements, + onChange: onChangeControl, + __next40pxDefaultSize: true, + hideLabelFromVision, + multiple: isMultiple + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/text.mjs +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +function Text2({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + prefix: prefix ? (0, import_element47.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element47.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleControl } = unlock(import_components40.privateApis); +function Toggle({ + field, + onChange, + data, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, description, getValue, setValue, isValid: isValid2 } = field; + const onChangeControl = (0, import_element48.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ValidatedToggleControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + hidden: hideLabelFromVision, + label, + help: description, + checked: getValue({ item: data }), + onChange: onChangeControl + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/textarea.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var { ValidatedTextareaControl } = unlock(import_components41.privateApis); +function Textarea({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { rows = 4 } = config || {}; + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }); + const onChangeControl = (0, import_element49.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + ValidatedTextareaControl, + { + required: !!isValid2.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value: value ?? "", + help: description, + onChange: onChangeControl, + rows, + minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, + maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, + __next40pxDefaultSize: true, + hideLabelFromVision + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +var { ValidatedToggleGroupControl } = unlock(import_components42.privateApis); +function ToggleGroup({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const onChangeControl = (0, import_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( + ValidatedToggleGroupControl, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + __next40pxDefaultSize: true, + isBlock: true, + label: field.label, + help: selectedOption?.description || field.description, + onChange: onChangeControl, + value, + hideLabelFromVision, + children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( + import_components42.__experimentalToggleGroupControlOption, + { + label: el.label, + value: el.value + }, + el.value + )) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/array.mjs +var import_components43 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +var { ValidatedFormTokenField } = unlock(import_components43.privateApis); +function ArrayControl({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; + const value = getValue({ item: data }); + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const arrayValueAsElements = (0, import_element51.useMemo)( + () => Array.isArray(value) ? value.map((token) => { + const element = elements?.find( + (suggestion) => suggestion.value === token + ); + return element || { value: token, label: token }; + }) : [], + [value, elements] + ); + const onChangeControl = (0, import_element51.useCallback)( + (tokens) => { + const valueTokens = tokens.map((token) => { + if (typeof token === "object" && "value" in token) { + return token.value; + } + return token; + }); + onChange(setValue({ item: data, value: valueTokens })); + }, + [onChange, setValue, data] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + ValidatedFormTokenField, + { + required: !!isValid2?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label: hideLabelFromVision ? void 0 : label, + value: arrayValueAsElements, + onChange: onChangeControl, + placeholder, + suggestions: elements?.map((element) => element.value), + __experimentalValidateInput: (token) => { + if (field.isValid?.elements && elements) { + return elements.some( + (element) => element.value === token || element.label === token + ); + } + return true; + }, + __experimentalExpandOnFocus: elements && elements.length > 0, + __experimentalShowHowTo: !field.isValid?.elements, + displayTransform: (token) => { + if (typeof token === "object" && "label" in token) { + return token.label; + } + if (typeof token === "string" && elements) { + const element = elements.find( + (el) => el.value === token + ); + return element?.label || token; + } + return token; + }, + __experimentalRenderItem: ({ item }) => { + if (typeof item === "string" && elements) { + const element = elements.find( + (el) => el.value === item + ); + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: item }); + } + } + ); +} + +// node_modules/colord/index.mjs +var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; +var t = function(r3) { + return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; +}; +var n = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; +}; +var e = function(r3, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; +}; +var u = function(r3) { + return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; +}; +var a = function(r3) { + return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; +}; +var o = function(r3) { + return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; +}; +var i = /^#([0-9a-f]{3,8})$/i; +var s = function(r3) { + var t2 = r3.toString(16); + return t2.length < 2 ? "0" + t2 : t2; +}; +var h = function(r3) { + var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0; + return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; +}; +var b = function(r3) { + var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6; + return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 }; +}; +var g = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; +}; +var d = function(r3) { + return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; +}; +var f = function(r3) { + return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; +}; +var c = function(r3) { + return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; +}; +var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; +var y = { string: [[function(r3) { + var t2 = i.exec(r3); + return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; +}, "hex"], [function(r3) { + var t2 = v.exec(r3) || m.exec(r3); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; +}, "rgb"], [function(t2) { + var n2 = l.exec(t2) || p.exec(t2); + if (!n2) return null; + var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(a2); +}, "hsl"]], object: [[function(r3) { + var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2; + return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; +}, "rgb"], [function(r3) { + var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2; + if (!t(n2) || !t(e2) || !t(u2)) return null; + var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) }); + return f(i2); +}, "hsl"], [function(r3) { + var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; + if (!t(n2) || !t(a2) || !t(o2)) return null; + var h2 = (function(r4) { + return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; + })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) }); + return b(h2); +}, "hsv"]] }; +var N = function(r3, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r3); + if (e2) return [e2, t2[n2][1]]; + } + return [null, void 0]; +}; +var x = function(r3) { + return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; +}; +var M = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; +}; +var H = function(r3) { + return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; +}; +var $ = function(r3, t2) { + var n2 = c(r3); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; +}; +var j = (function() { + function r3(r4) { + this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r3.prototype.isValid = function() { + return null !== this.parsed; + }, r3.prototype.brightness = function() { + return n(H(this.rgba), 2); + }, r3.prototype.isDark = function() { + return H(this.rgba) < 0.5; + }, r3.prototype.isLight = function() { + return H(this.rgba) >= 0.5; + }, r3.prototype.toHex = function() { + return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2; + var r4, t2, e2, u2, a2, i2; + }, r3.prototype.toRgb = function() { + return o(this.rgba); + }, r3.prototype.toRgbString = function() { + return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsl = function() { + return d(c(this.rgba)); + }, r3.prototype.toHslString = function() { + return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r4, t2, n2, e2, u2; + }, r3.prototype.toHsv = function() { + return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; + var r4; + }, r3.prototype.invert = function() { + return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); + var r4; + }, r3.prototype.saturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); + }, r3.prototype.desaturate = function(r4) { + return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); + }, r3.prototype.grayscale = function() { + return w(M(this.rgba, -1)); + }, r3.prototype.lighten = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); + }, r3.prototype.darken = function(r4) { + return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); + }, r3.prototype.rotate = function(r4) { + return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); + }, r3.prototype.alpha = function(r4) { + return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3); + var t2; + }, r3.prototype.hue = function(r4) { + var t2 = c(this.rgba); + return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r3.prototype.isEqual = function(r4) { + return this.toHex() === w(r4).toHex(); + }, r3; +})(); +var w = function(r3) { + return r3 instanceof j ? r3 : new j(r3); +}; + +// packages/dataviews/build-module/components/dataform-controls/color.mjs +var import_components44 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3, Picker } = unlock(import_components44.privateApis); +var ColorPicker = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + import_components44.Dropdown, + { + renderToggle: ({ onToggle, isOpen }) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + "button", + { + type: "button", + onClick: onToggle, + style: { + width: "24px", + height: "24px", + borderRadius: "50%", + backgroundColor: validColor, + border: "1px solid #ddd", + cursor: "pointer", + outline: isOpen ? "2px solid #007cba" : "none", + outlineOffset: "2px", + display: "flex", + alignItems: "center", + justifyContent: "center", + padding: 0, + margin: 0 + }, + "aria-label": "Open color picker" + } + ) }), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { style: { padding: "16px" }, children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + Picker, + { + color: w(validColor), + onChange: onColorChange, + enableAlpha: true + } + ) }) + } + ); +}; +function Color({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const { label, placeholder, description, setValue, isValid: isValid2 } = field; + const value = field.getValue({ item: data }) || ""; + const handleColorChange = (0, import_element52.useCallback)( + (colorObject) => { + onChange(setValue({ item: data, value: colorObject.toHex() })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element52.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ValidatedInputControl3, + { + required: !!field.isValid?.required, + markWhenOptional, + customValidity: getCustomValidity(isValid2, validity), + label, + placeholder, + value, + help: description, + onChange: handleInputChange, + hideLabelFromVision, + type: "text", + prefix: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ColorPicker, + { + color: value, + onColorChange: handleColorChange + } + ) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +function Password({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + const [isVisible2, setIsVisible] = (0, import_element53.useState)(false); + const toggleVisibility = (0, import_element53.useCallback)(() => { + setIsVisible((prev) => !prev); + }, []); + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n36.__)("Hide password") : (0, import_i18n36.__)("Show password") + } + ) }) + } + } + ); +} + +// packages/dataviews/build-module/field-types/utils/has-elements.mjs +function hasElements(field) { + return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; +} + +// packages/dataviews/build-module/components/dataform-controls/index.mjs +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + array: ArrayControl, + checkbox: Checkbox, + color: Color, + combobox: Combobox3, + datetime: DateTime, + date: DateControl, + email: Email, + telephone: Telephone, + url: Url, + integer: Integer, + number: Number2, + password: Password, + radio: Radio, + select: Select, + text: Text2, + toggle: Toggle, + textarea: Textarea, + toggleGroup: ToggleGroup +}; +function isEditConfig(value) { + return value && typeof value === "object" && typeof value.control === "string"; +} +function createConfiguredControl(config) { + const { control, ...controlConfig } = config; + const BaseControlType = getControlByType(control); + if (BaseControlType === null) { + return null; + } + return function ConfiguredControl(props) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(BaseControlType, { ...props, config: controlConfig }); + }; +} +function getControl(field, fallback) { + if (typeof field.Edit === "function") { + return field.Edit; + } + if (typeof field.Edit === "string") { + return getControlByType(field.Edit); + } + if (isEditConfig(field.Edit)) { + return createConfiguredControl(field.Edit); + } + if (hasElements(field) && field.type !== "array") { + return getControlByType("select"); + } + if (fallback === null) { + return null; + } + return getControlByType(fallback); +} +function getControlByType(type) { + if (Object.keys(FORM_CONTROLS).includes(type)) { + return FORM_CONTROLS[type]; + } + return null; +} + +// packages/dataviews/build-module/field-types/utils/get-filter-by.mjs +function getFilterBy(field, defaultOperators, validOperators) { + if (field.filterBy === false) { + return false; + } + const operators = field.filterBy?.operators?.filter( + (op) => validOperators.includes(op) + ) ?? defaultOperators; + if (operators.length === 0) { + return false; + } + return { + isPrimary: !!field.filterBy?.isPrimary, + operators + }; +} +var get_filter_by_default = getFilterBy; + +// packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs +var getValueFromId = (id) => ({ item }) => { + const path = id.split("."); + let value = item; + for (const segment of path) { + if (value.hasOwnProperty(segment)) { + value = value[segment]; + } else { + value = void 0; + } + } + return value; +}; +var get_value_from_id_default = getValueFromId; + +// packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs +var setValueFromId = (id) => ({ value }) => { + const path = id.split("."); + const result = {}; + let current = result; + for (const segment of path.slice(0, -1)) { + current[segment] = {}; + current = current[segment]; + } + current[path.at(-1)] = value; + return result; +}; +var set_value_from_id_default = setValueFromId; + +// packages/dataviews/build-module/field-types/email.mjs +var import_i18n37 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/render-from-elements.mjs +function RenderFromElements({ + item, + field +}) { + const { elements, isLoading } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + const value = field.getValue({ item }); + if (isLoading) { + return value; + } + if (elements.length === 0) { + return value; + } + return elements?.find((element) => element.value === value)?.label || field.getValue({ item }); +} + +// packages/dataviews/build-module/field-types/utils/render-default.mjs +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(RenderFromElements, { item, field }); + } + return field.getValueFormatted({ item, field }); +} + +// packages/dataviews/build-module/field-types/utils/sort-text.mjs +var sort_text_default = (a2, b2, direction) => { + return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-required.mjs +function isValidRequired(item, field) { + const value = field.getValue({ item }); + return ![void 0, "", null].includes(value); +} + +// packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs +function isValidMinLength(item, field) { + if (typeof field.isValid.minLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length >= field.isValid.minLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs +function isValidMaxLength(item, field) { + if (typeof field.isValid.maxLength?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return String(value).length <= field.isValid.maxLength.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs +function isValidPattern(item, field) { + if (field.isValid.pattern?.constraint === void 0) { + return true; + } + try { + const regexp = new RegExp(field.isValid.pattern.constraint); + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return regexp.test(String(value)); + } catch { + return false; + } +} + +// packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs +function isValidElements(item, field) { + const elements = field.elements ?? []; + const validValues = elements.map((el) => el.value); + if (validValues.length === 0) { + return true; + } + const value = field.getValue({ item }); + return [].concat(value).every((v2) => validValues.includes(v2)); +} + +// packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs +function getValueFormatted({ + item, + field +}) { + return field.getValue({ item }); +} +var get_value_formatted_default_default = getValueFormatted; + +// packages/dataviews/build-module/field-types/email.mjs +var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +function isValidCustom(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { + return (0, import_i18n37.__)("Value must be a valid email address."); + } + return null; +} +var email_default = { + type: "email", + render, + Edit: "email", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements, + custom: isValidCustom + } +}; + +// packages/dataviews/build-module/field-types/integer.mjs +var import_i18n38 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/sort-number.mjs +var sort_number_default = (a2, b2, direction) => { + return direction === "asc" ? a2 - b2 : b2 - a2; +}; + +// packages/dataviews/build-module/field-types/utils/is-valid-min.mjs +function isValidMin(item, field) { + if (typeof field.isValid.min?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) >= field.isValid.min.constraint; +} + +// packages/dataviews/build-module/field-types/utils/is-valid-max.mjs +function isValidMax(item, field) { + if (typeof field.isValid.max?.constraint !== "number") { + return false; + } + const value = field.getValue({ item }); + if ([void 0, "", null].includes(value)) { + return true; + } + return Number(value) <= field.isValid.max.constraint; +} + +// packages/dataviews/build-module/field-types/integer.mjs +var format2 = { + separatorThousand: "," +}; +function getValueFormatted2({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatInteger; + if (field.type !== "integer") { + formatInteger = format2; + } else { + formatInteger = field.format; + } + const { separatorThousand } = formatInteger; + const integerValue = Math.trunc(value); + if (!separatorThousand) { + return String(integerValue); + } + return String(integerValue).replace( + /\B(?=(\d{3})+(?!\d))/g, + separatorThousand + ); +} +function isValidCustom2(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { + return (0, import_i18n38.__)("Value must be an integer."); + } + return null; +} +var integer_default = { + type: "integer", + render, + Edit: "integer", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format2, + getValueFormatted: getValueFormatted2, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom2 + } +}; + +// packages/dataviews/build-module/field-types/number.mjs +var import_i18n39 = __toESM(require_i18n(), 1); +var format3 = { + separatorThousand: ",", + separatorDecimal: ".", + decimals: 2 +}; +function getValueFormatted3({ + item, + field +}) { + let value = field.getValue({ item }); + if (value === null || value === void 0) { + return ""; + } + value = Number(value); + if (!Number.isFinite(value)) { + return String(value); + } + let formatNumber; + if (field.type !== "number") { + formatNumber = format3; + } else { + formatNumber = field.format; + } + const { separatorThousand, separatorDecimal, decimals } = formatNumber; + const fixedValue = value.toFixed(decimals); + const [integerPart, decimalPart] = fixedValue.split("."); + const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; + return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; +} +function isEmpty2(value) { + return value === "" || value === void 0 || value === null; +} +function isValidCustom3(item, field) { + const value = field.getValue({ item }); + if (!isEmpty2(value) && !Number.isFinite(value)) { + return (0, import_i18n39.__)("Value must be a number."); + } + return null; +} +var number_default = { + type: "number", + render, + Edit: "number", + sort: sort_number_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN + ], + validOperators: [ + // Single-selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_LESS_THAN, + OPERATOR_GREATER_THAN, + OPERATOR_LESS_THAN_OR_EQUAL, + OPERATOR_GREATER_THAN_OR_EQUAL, + OPERATOR_BETWEEN, + // Multiple-selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: format3, + getValueFormatted: getValueFormatted3, + validate: { + required: isValidRequired, + min: isValidMin, + max: isValidMax, + elements: isValidElements, + custom: isValidCustom3 + } +}; + +// packages/dataviews/build-module/field-types/text.mjs +var text_default = { + type: "text", + render, + Edit: "text", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + // Single selection + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/datetime.mjs +var import_date6 = __toESM(require_date(), 1); +var format4 = { + datetime: (0, import_date6.getSettings)().formats.datetime, + weekStartsOn: (0, import_date6.getSettings)().l10n.startOfWeek +}; +function getValueFormatted4({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDatetime; + if (field.type !== "datetime") { + formatDatetime = format4; + } else { + formatDatetime = field.format; + } + return (0, import_date6.dateI18n)(formatDatetime.datetime, (0, import_date6.getDate)(value)); +} +var sort = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var datetime_default = { + type: "datetime", + render, + Edit: "datetime", + sort, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER + ], + format: format4, + getValueFormatted: getValueFormatted4, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/date.mjs +var import_date7 = __toESM(require_date(), 1); +var format5 = { + date: (0, import_date7.getSettings)().formats.date, + weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek +}; +function getValueFormatted5({ + item, + field +}) { + const value = field.getValue({ item }); + if (["", void 0, null].includes(value)) { + return ""; + } + let formatDate2; + if (field.type !== "date") { + formatDate2 = format5; + } else { + formatDate2 = field.format; + } + return (0, import_date7.dateI18n)(formatDate2.date, (0, import_date7.getDate)(value)); +} +var sort2 = (a2, b2, direction) => { + const timeA = new Date(a2).getTime(); + const timeB = new Date(b2).getTime(); + return direction === "asc" ? timeA - timeB : timeB - timeA; +}; +var date_default = { + type: "date", + render, + Edit: "date", + sort: sort2, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + validOperators: [ + OPERATOR_ON, + OPERATOR_NOT_ON, + OPERATOR_BEFORE, + OPERATOR_AFTER, + OPERATOR_BEFORE_INC, + OPERATOR_AFTER_INC, + OPERATOR_IN_THE_PAST, + OPERATOR_OVER, + OPERATOR_BETWEEN + ], + format: format5, + getValueFormatted: getValueFormatted5, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/boolean.mjs +var import_i18n40 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs +function isValidRequiredForBool(item, field) { + const value = field.getValue({ item }); + return value === true; +} + +// packages/dataviews/build-module/field-types/boolean.mjs +function getValueFormatted6({ + item, + field +}) { + const value = field.getValue({ item }); + if (value === true) { + return (0, import_i18n40.__)("True"); + } + if (value === false) { + return (0, import_i18n40.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n40.__)("Value must be true, false, or undefined"); + } + return null; +} +var sort3 = (a2, b2, direction) => { + const boolA = Boolean(a2); + const boolB = Boolean(b2); + if (boolA === boolB) { + return 0; + } + if (direction === "asc") { + return boolA ? 1 : -1; + } + return boolA ? -1 : 1; +}; +var boolean_default = { + type: "boolean", + render, + Edit: "checkbox", + sort: sort3, + validate: { + required: isValidRequiredForBool, + elements: isValidElements, + custom: isValidCustom4 + }, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + format: {}, + getValueFormatted: getValueFormatted6 +}; + +// packages/dataviews/build-module/field-types/media.mjs +var media_default = { + type: "media", + render: () => null, + Edit: null, + sort: () => 0, + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: get_value_formatted_default_default, + // cannot validate any constraint, so + // the only available validation for the field author + // would be providing a custom validator. + validate: {} +}; + +// packages/dataviews/build-module/field-types/array.mjs +var import_i18n41 = __toESM(require_i18n(), 1); + +// packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs +function isValidRequiredForArray(item, field) { + const value = field.getValue({ item }); + return Array.isArray(value) && value.length > 0 && value.every( + (element) => ![void 0, "", null].includes(element) + ); +} + +// packages/dataviews/build-module/field-types/array.mjs +function getValueFormatted7({ + item, + field +}) { + const value = field.getValue({ item }); + const arr = Array.isArray(value) ? value : []; + return arr.join(", "); +} +function render2({ item, field }) { + return getValueFormatted7({ item, field }); +} +function isValidCustom5(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !Array.isArray(value)) { + return (0, import_i18n41.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n41.__)("Every value must be a string."); + } + return null; +} +var sort4 = (a2, b2, direction) => { + const arrA = Array.isArray(a2) ? a2 : []; + const arrB = Array.isArray(b2) ? b2 : []; + if (arrA.length !== arrB.length) { + return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; + } + const joinedA = arrA.join(","); + const joinedB = arrB.join(","); + return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); +}; +var array_default = { + type: "array", + render: render2, + Edit: "array", + sort: sort4, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: getValueFormatted7, + validate: { + required: isValidRequiredForArray, + elements: isValidElements, + custom: isValidCustom5 + } +}; + +// packages/dataviews/build-module/field-types/password.mjs +function getValueFormatted8({ + item, + field +}) { + return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; +} +var password_default = { + type: "password", + render, + Edit: "password", + sort: () => 0, + // Passwords should not be sortable for security reasons + enableSorting: false, + enableGlobalSearch: false, + defaultOperators: [], + validOperators: [], + format: {}, + getValueFormatted: getValueFormatted8, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/telephone.mjs +var telephone_default = { + type: "telephone", + render, + Edit: "telephone", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/color.mjs +var import_i18n42 = __toESM(require_i18n(), 1); +var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(RenderFromElements, { item, field }); + } + const value = get_value_formatted_default_default({ item, field }); + if (!value || !w(value).isValid()) { + return value; + } + return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: value }) + ] }); +} +function isValidCustom6(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && !w(value).isValid()) { + return (0, import_i18n42.__)("Value must be a valid color."); + } + return null; +} +var sort5 = (a2, b2, direction) => { + const colorA = w(a2); + const colorB = w(b2); + if (!colorA.isValid() && !colorB.isValid()) { + return 0; + } + if (!colorA.isValid()) { + return direction === "asc" ? 1 : -1; + } + if (!colorB.isValid()) { + return direction === "asc" ? -1 : 1; + } + const hslA = colorA.toHsl(); + const hslB = colorB.toHsl(); + if (hslA.h !== hslB.h) { + return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; + } + if (hslA.s !== hslB.s) { + return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; + } + return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; +}; +var color_default = { + type: "color", + render: render3, + Edit: "color", + sort: sort5, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_IS_ANY, + OPERATOR_IS_NONE + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements, + custom: isValidCustom6 + } +}; + +// packages/dataviews/build-module/field-types/url.mjs +var url_default = { + type: "url", + render, + Edit: "url", + sort: sort_text_default, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE], + validOperators: [ + OPERATOR_IS, + OPERATOR_IS_NOT, + OPERATOR_CONTAINS, + OPERATOR_NOT_CONTAINS, + OPERATOR_STARTS_WITH, + // Multiple selection + OPERATOR_IS_ANY, + OPERATOR_IS_NONE, + OPERATOR_IS_ALL, + OPERATOR_IS_NOT_ALL + ], + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + pattern: isValidPattern, + minLength: isValidMinLength, + maxLength: isValidMaxLength, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/no-type.mjs +var sort6 = (a2, b2, direction) => { + if (typeof a2 === "number" && typeof b2 === "number") { + return sort_number_default(a2, b2, direction); + } + return sort_text_default(a2, b2, direction); +}; +var no_type_default = { + // type: no type for this one + render, + Edit: null, + sort: sort6, + enableSorting: true, + enableGlobalSearch: false, + defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT], + validOperators: getAllOperatorNames(), + format: {}, + getValueFormatted: get_value_formatted_default_default, + validate: { + required: isValidRequired, + elements: isValidElements + } +}; + +// packages/dataviews/build-module/field-types/utils/get-is-valid.mjs +function getIsValid(field, fieldType) { + let required; + if (field.isValid?.required === true && fieldType.validate.required !== void 0) { + required = { + constraint: true, + validate: fieldType.validate.required + }; + } + let elements; + if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out + field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { + elements = { + constraint: true, + validate: fieldType.validate.elements + }; + } + let min; + if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { + min = { + constraint: field.isValid.min, + validate: fieldType.validate.min + }; + } + let max; + if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { + max = { + constraint: field.isValid.max, + validate: fieldType.validate.max + }; + } + let minLength; + if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { + minLength = { + constraint: field.isValid.minLength, + validate: fieldType.validate.minLength + }; + } + let maxLength; + if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { + maxLength = { + constraint: field.isValid.maxLength, + validate: fieldType.validate.maxLength + }; + } + let pattern; + if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { + pattern = { + constraint: field.isValid?.pattern, + validate: fieldType.validate.pattern + }; + } + const custom = field.isValid?.custom ?? fieldType.validate.custom; + return { + required, + elements, + min, + max, + minLength, + maxLength, + pattern, + custom + }; +} + +// packages/dataviews/build-module/field-types/utils/get-filter.mjs +function getFilter(fieldType) { + return fieldType.validOperators.reduce((accumulator, operator) => { + const operatorObj = getOperatorByName(operator); + if (operatorObj?.filter) { + accumulator[operator] = operatorObj.filter; + } + return accumulator; + }, {}); +} + +// packages/dataviews/build-module/field-types/utils/get-format.mjs +function getFormat(field, fieldType) { + return { + ...fieldType.format, + ...field.format + }; +} +var get_format_default = getFormat; + +// packages/dataviews/build-module/field-types/index.mjs +function getFieldTypeByName(type) { + const found = [ + email_default, + integer_default, + number_default, + text_default, + datetime_default, + date_default, + boolean_default, + media_default, + array_default, + password_default, + telephone_default, + color_default, + url_default + ].find((fieldType) => fieldType?.type === type); + if (!!found) { + return found; + } + return no_type_default; +} +function normalizeFields(fields) { + return fields.map((field) => { + const fieldType = getFieldTypeByName(field.type); + const getValue = field.getValue || get_value_from_id_default(field.id); + const sort7 = function(a2, b2, direction) { + const aValue = getValue({ item: a2 }); + const bValue = getValue({ item: b2 }); + return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); + }; + return { + id: field.id, + label: field.label || field.id, + header: field.header || field.label || field.id, + description: field.description, + placeholder: field.placeholder, + getValue, + setValue: field.setValue || set_value_from_id_default(field.id), + elements: field.elements, + getElements: field.getElements, + hasElements: hasElements(field), + isVisible: field.isVisible, + enableHiding: field.enableHiding ?? true, + readOnly: field.readOnly ?? false, + // The type provides defaults for the following props + type: fieldType.type, + render: field.render ?? fieldType.render, + Edit: getControl(field, fieldType.Edit), + sort: sort7, + enableSorting: field.enableSorting ?? fieldType.enableSorting, + enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, + isValid: getIsValid(field, fieldType), + filterBy: get_filter_by_default( + field, + fieldType.defaultOperators, + fieldType.validOperators + ), + filter: getFilter(fieldType), + format: get_format_default(field, fieldType), + getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted + }; + }); +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); +var defaultGetItemId = (item) => item.id; +var defaultIsItemClickable = () => true; +var EMPTY_ARRAY6 = []; +var dataViewsLayouts = VIEW_LAYOUTS.filter( + (viewLayout) => !viewLayout.isPicker +); +function DefaultUI({ + header, + search = true, + searchLabel = void 0 +}) { + return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DataViewsFooter, {}) + ] }); +} +function DataViews({ + view, + onChangeView, + fields, + search = true, + searchLabel = void 0, + actions = EMPTY_ARRAY6, + data, + getItemId: getItemId2 = defaultGetItemId, + getItemLevel, + isLoading = false, + paginationInfo, + defaultLayouts: defaultLayoutsProperty, + selection: selectionProperty, + onChangeSelection, + onClickItem, + renderItemLink, + isItemClickable = defaultIsItemClickable, + header, + children, + config = { perPageSizes: [10, 20, 50, 100] }, + empty +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element54.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element54.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element54.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element54.useState)(null); + function setSelectionWithChange(value) { + const newValue = typeof value === "function" ? value(selection) : value; + if (isUncontrolled) { + setSelectionState(newValue); + } + if (onChangeSelection) { + onChangeSelection(newValue); + } + } + const _fields = (0, import_element54.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element54.useMemo)(() => { + return selection.filter( + (id) => data.some((item) => getItemId2(item) === id) + ); + }, [selection, data, getItemId2]); + const filters = use_filters_default(_fields, view); + const hasPrimaryOrLockedFilters = (0, import_element54.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element54.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element54.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element54.useEffect)(() => { + if (!view.infiniteScrollEnabled || !containerRef.current) { + return; + } + const handleScroll = (0, import_compose12.throttle)((event) => { + const target = event.target; + const scrollTop = target.scrollTop; + const scrollHeight = target.scrollHeight; + const clientHeight = target.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 100) { + infiniteScrollHandler?.(); + } + }, 100); + const container = containerRef.current; + container.addEventListener("scroll", handleScroll); + return () => { + container.removeEventListener("scroll", handleScroll); + handleScroll.cancel(); + }; + }, [infiniteScrollHandler, view.infiniteScrollEnabled]); + const defaultLayouts = (0, import_element54.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data, + isLoading, + paginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInfiniteScrollHandler: !!infiniteScrollHandler + }, + children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + DefaultUI, + { + header, + search, + searchLabel + } + ) }) + } + ); +} +var DataViewsSubComponents = DataViews; +DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; +DataViewsSubComponents.Filters = filters_default; +DataViewsSubComponents.FiltersToggled = filters_toggled_default; +DataViewsSubComponents.FiltersToggle = toggle_default; +DataViewsSubComponents.Layout = DataViewsLayout; +DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; +DataViewsSubComponents.Pagination = DataViewsPagination; +DataViewsSubComponents.Search = dataviews_search_default; +DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; +DataViewsSubComponents.Footer = DataViewsFooter; +var dataviews_default = DataViewsSubComponents; + +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element55 = __toESM(require_element(), 1); +var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element55.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime98.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/header.mjs +var import_components47 = __toESM(require_components(), 1); + +// packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs +var import_components46 = __toESM(require_components(), 1); +var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components46.createSlotFill)("SidebarToggle"); + +// packages/admin-ui/build-module/page/header.mjs +var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); +function Page({ + breadcrumbs, + badges, + title, + subTitle, + children, + className, + actions, + hasPadding = false, + showSidebarToggle = true +}) { + const classes = clsx_default("admin-ui-page", className); + return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + ] }); +} +Page.SidebarToggleFill = SidebarToggleFill; +var page_default = Page; + +// routes/template-part-list/stage.tsx +var import_core_data3 = __toESM(require_core_data()); +var import_components49 = __toESM(require_components()); +var import_data10 = __toESM(require_data()); +var import_element57 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_i18n45 = __toESM(require_i18n()); + +// node_modules/tslib/tslib.es6.mjs +var __assign = function() { + __assign = Object.assign || function __assign2(t2) { + for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { + s2 = arguments[i2]; + for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2]; + } + return t2; + }; + return __assign.apply(this, arguments); +}; + +// node_modules/lower-case/dist.es2015/index.js +function lowerCase(str) { + return str.toLowerCase(); +} + +// node_modules/no-case/dist.es2015/index.js +var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; +var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; +function noCase(input, options) { + if (options === void 0) { + options = {}; + } + var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; + var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); + var start = 0; + var end = result.length; + while (result.charAt(start) === "\0") + start++; + while (result.charAt(end - 1) === "\0") + end--; + return result.slice(start, end).split("\0").map(transform).join(delimiter); +} +function replace(input, re, value) { + if (re instanceof RegExp) + return input.replace(re, value); + return re.reduce(function(input2, re2) { + return input2.replace(re2, value); + }, input); +} + +// node_modules/dot-case/dist.es2015/index.js +function dotCase(input, options) { + if (options === void 0) { + options = {}; + } + return noCase(input, __assign({ delimiter: "." }, options)); +} + +// node_modules/param-case/dist.es2015/index.js +function paramCase(input, options) { + if (options === void 0) { + options = {}; + } + return dotCase(input, __assign({ delimiter: "-" }, options)); +} + +// packages/fields/build-module/components/create-template-part-modal/index.mjs +var import_components48 = __toESM(require_components(), 1); +var import_compose13 = __toESM(require_compose(), 1); +var import_core_data2 = __toESM(require_core_data(), 1); +var import_data9 = __toESM(require_data(), 1); +var import_element56 = __toESM(require_element(), 1); +var import_i18n43 = __toESM(require_i18n(), 1); +var import_notices = __toESM(require_notices(), 1); +var import_blocks = __toESM(require_blocks(), 1); + +// packages/fields/build-module/components/create-template-part-modal/utils.mjs +var import_data8 = __toESM(require_data(), 1); +var import_core_data = __toESM(require_core_data(), 1); +var useExistingTemplateParts = () => { + return (0, import_data8.useSelect)( + (select2) => select2(import_core_data.store).getEntityRecords( + "postType", + "wp_template_part", + { + per_page: -1 + } + ), + [] + ) ?? []; +}; +var getUniqueTemplatePartTitle = (title, templateParts) => { + const lowercaseTitle = title.toLowerCase(); + const existingTitles = templateParts.map( + (templatePart) => templatePart.title.rendered.toLowerCase() + ); + if (!existingTitles.includes(lowercaseTitle)) { + return title; + } + let suffix = 2; + while (existingTitles.includes(`${lowercaseTitle} ${suffix}`)) { + suffix++; + } + return `${title} ${suffix}`; +}; +var getCleanTemplatePartSlug = (title) => { + return paramCase(title).replace(/[^\w-]+/g, "") || "wp-custom-part"; +}; + +// packages/fields/build-module/components/create-template-part-modal/index.mjs +var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); +function getAreaRadioId(value, instanceId) { + return `fields-create-template-part-modal__area-option-${value}-${instanceId}`; +} +function getAreaRadioDescriptionId(value, instanceId) { + return `fields-create-template-part-modal__area-option-description-${value}-${instanceId}`; +} +function CreateTemplatePartModal({ + modalTitle, + ...restProps +}) { + const defaultModalTitle = (0, import_data9.useSelect)( + (select2) => select2(import_core_data2.store).getPostType("wp_template_part")?.labels?.add_new_item, + [] + ); + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.Modal, + { + title: modalTitle || defaultModalTitle, + onRequestClose: restProps.closeModal, + overlayClassName: "fields-create-template-part-modal", + focusOnMount: "firstContentElement", + size: "medium", + children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(CreateTemplatePartModalContents, { ...restProps }) + } + ); +} +var getTemplatePartIcon = (areaOrIconName) => { + if ("header" === areaOrIconName) { + return header_default; + } else if ("footer" === areaOrIconName) { + return footer_default; + } else if ("sidebar" === areaOrIconName) { + return sidebar_default; + } else if ("overlay" === areaOrIconName) { + return table_column_after_default; + } + if ("menu" === areaOrIconName) { + return table_column_after_default; + } + return symbol_filled_default; +}; +function CreateTemplatePartModalContents({ + defaultArea = "uncategorized", + blocks = [], + confirmLabel = (0, import_i18n43.__)("Add"), + closeModal, + onCreate, + onError, + defaultTitle = "" +}) { + const { createErrorNotice } = (0, import_data9.useDispatch)(import_notices.store); + const { saveEntityRecord } = (0, import_data9.useDispatch)(import_core_data2.store); + const existingTemplateParts = useExistingTemplateParts(); + const [title, setTitle] = (0, import_element56.useState)(defaultTitle); + const [area, setArea] = (0, import_element56.useState)(defaultArea); + const [isSubmitting, setIsSubmitting] = (0, import_element56.useState)(false); + const instanceId = (0, import_compose13.useInstanceId)(CreateTemplatePartModal); + const defaultTemplatePartAreas = (0, import_data9.useSelect)( + (select2) => select2(import_core_data2.store).getCurrentTheme()?.default_template_part_areas, + [] + ); + async function createTemplatePart() { + if (!title || isSubmitting) { + return; + } + try { + setIsSubmitting(true); + const uniqueTitle = getUniqueTemplatePartTitle( + title, + existingTemplateParts + ); + const cleanSlug = getCleanTemplatePartSlug(uniqueTitle); + const templatePart = await saveEntityRecord( + "postType", + "wp_template_part", + { + slug: cleanSlug, + title: uniqueTitle, + content: (0, import_blocks.serialize)(blocks), + area + }, + { throwOnError: true } + ); + await onCreate(templatePart); + } catch (error) { + const errorMessage = error instanceof Error && "code" in error && error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n43.__)( + "An error occurred while creating the template part." + ); + createErrorNotice(errorMessage, { type: "snackbar" }); + onError?.(); + } finally { + setIsSubmitting(false); + } + } + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + "form", + { + onSubmit: async (event) => { + event.preventDefault(); + await createTemplatePart(); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_components48.__experimentalVStack, { spacing: "4", children: [ + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.TextControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n43.__)("Name"), + value: title, + onChange: setTitle, + required: true + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("fieldset", { className: "fields-create-template-part-modal__area-fieldset", children: [ + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components48.BaseControl.VisualLabel, { as: "legend", children: (0, import_i18n43.__)("Area") }), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "fields-create-template-part-modal__area-radio-group", children: (defaultTemplatePartAreas ?? []).map( + (item) => { + const icon = getTemplatePartIcon(item.icon); + return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)( + "div", + { + className: "fields-create-template-part-modal__area-radio-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + "input", + { + type: "radio", + id: getAreaRadioId( + item.area, + instanceId + ), + name: `fields-create-template-part-modal__area-${instanceId}`, + value: item.area, + checked: area === item.area, + onChange: () => { + setArea(item.area); + }, + "aria-describedby": getAreaRadioDescriptionId( + item.area, + instanceId + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.Icon, + { + icon, + className: "fields-create-template-part-modal__area-radio-icon" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + "label", + { + htmlFor: getAreaRadioId( + item.area, + instanceId + ), + className: "fields-create-template-part-modal__area-radio-label", + children: item.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.Icon, + { + icon: check_default, + className: "fields-create-template-part-modal__area-radio-checkmark" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + "p", + { + className: "fields-create-template-part-modal__area-radio-description", + id: getAreaRadioDescriptionId( + item.area, + instanceId + ), + children: item.description + } + ) + ] + }, + item.area + ); + } + ) }) + ] }), + /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_components48.__experimentalHStack, { justify: "right", children: [ + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.Button, + { + __next40pxDefaultSize: true, + variant: "tertiary", + onClick: () => { + closeModal(); + }, + children: (0, import_i18n43.__)("Cancel") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + import_components48.Button, + { + __next40pxDefaultSize: true, + variant: "primary", + type: "submit", + "aria-disabled": !title || isSubmitting, + isBusy: isSubmitting, + children: confirmLabel + } + ) + ] }) + ] }) + } + ); +} + +// routes/lock-unlock.ts +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" +); + +// routes/template-part-list/view-utils.ts +var NAVIGATION_OVERLAY_TEMPLATE_PART_AREA = "navigation-overlay"; +var DEFAULT_VIEW = { + type: "grid", + sort: { + field: "date", + direction: "desc" + }, + fields: [], + titleField: "title", + mediaField: "preview" +}; +var DEFAULT_LAYOUTS = { + table: {}, + grid: {}, + list: {} +}; +var DEFAULT_VIEWS = [ + { + slug: "all", + label: "All Template Parts" + }, + { + slug: "header", + label: "Headers" + }, + { + slug: "footer", + label: "Footers" + }, + { + slug: "sidebar", + label: "Sidebars" + }, + { + slug: NAVIGATION_OVERLAY_TEMPLATE_PART_AREA, + label: "Overlays" + }, + { + slug: "uncategorized", + label: "General" + } +]; +function getActiveViewOverridesForTab(area) { + if (area === "all") { + return {}; + } + return { + filters: [ + { + field: "area", + operator: "is", + value: area + } + ] + }; +} +function viewToQuery(view) { + const result = {}; + if (void 0 !== view.perPage) { + result.per_page = view.perPage; + } + if (void 0 !== view.page) { + result.page = view.page; + } + if (![void 0, ""].includes(view.search)) { + result.search = view.search; + } + if (void 0 !== view.sort?.field) { + result.orderby = view.sort.field; + } + if (void 0 !== view.sort?.direction) { + result.order = view.sort.direction; + } + const areaFilter = view.filters?.find( + (filter) => filter.field === "area" + ); + if (areaFilter) { + result.area = areaFilter.value; + } + return result; +} + +// routes/template-part-list/fields/preview.tsx +var import_i18n44 = __toESM(require_i18n()); +import { Preview } from "@wordpress/lazy-editor"; +function PreviewField({ item }) { + const description = item.description; + return /* @__PURE__ */ React.createElement( + Preview, + { + content: item?.content?.raw, + blocks: item?.blocks, + description + } + ); +} +var previewField = { + label: (0, import_i18n44.__)("Preview"), + id: "preview", + render: PreviewField, + enableSorting: false +}; + +// routes/template-part-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='4027627b27']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "4027627b27"); + style.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-template-part-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}')); + document.head.appendChild(style); +} + +// routes/template-part-list/stage.tsx +var { useEntityRecordsWithPermissions } = unlock2(import_core_data3.privateApis); +var { usePostActions, usePostFields } = unlock2(import_editor.privateApis); +var { Tabs } = unlock2(import_components49.privateApis); +function getItemId(item) { + return item.id.toString(); +} +function TemplatePartList() { + const invalidate = useInvalidate(); + const { area = "all" } = useParams({ + from: "/template-parts/list/$area" + }); + const navigate = useNavigate(); + const searchParams = useSearch({ from: "/template-parts/list/$area" }); + const postTypeObject = (0, import_data10.useSelect)( + (select2) => select2(import_core_data3.store).getPostType("wp_template_part"), + [] + ); + const labels = postTypeObject?.labels; + const canCreateRecord = (0, import_data10.useSelect)( + (select2) => select2(import_core_data3.store).canUser("create", { + kind: "postType", + name: "wp_template_part" + }), + [] + ); + const [showTemplatePartModal, setShowTemplatePartModal] = (0, import_element57.useState)(false); + const defaultView = DEFAULT_VIEW; + const activeViewOverrides = (0, import_element57.useMemo)( + () => getActiveViewOverridesForTab(area), + [area] + ); + const handleQueryParamsChange = (0, import_element57.useCallback)( + (params) => { + navigate({ + search: { + ...searchParams, + ...params + } + }); + }, + [searchParams, navigate] + ); + const { view, isModified, updateView, resetToDefault } = useView({ + kind: "postType", + name: "wp_template_part", + slug: "default-new", + defaultView, + activeViewOverrides, + queryParams: searchParams, + onChangeQueryParams: handleQueryParamsChange + }); + const onReset = () => { + resetToDefault(); + invalidate(); + }; + const onChangeView = (newView) => { + updateView(newView); + if (newView.type !== view.type) { + invalidate(); + } + }; + const postTypeQuery = (0, import_element57.useMemo)(() => viewToQuery(view), [view]); + const { + records: posts, + totalItems, + totalPages, + isResolving + } = useEntityRecordsWithPermissions( + "postType", + "wp_template_part", + postTypeQuery + ); + const allFields = usePostFields({ + postType: "wp_template_part" + }); + const fields = (0, import_element57.useMemo)(() => { + return [previewField].concat( + allFields.filter((field) => { + if (field.id === "area" && area !== "all") { + return false; + } + if (field.id === "status") { + return false; + } + return true; + }).map((field) => { + if (field.id === "area") { + return { ...field, filterBy: false }; + } + return field; + }) + ); + }, [allFields, area]); + const cleanupDeletedPostIdsFromUrl = (0, import_element57.useCallback)( + (deletedItems) => { + const deletedIds = deletedItems.map( + (item) => item.id.toString() + ); + const currentPostIds = searchParams.postIds || []; + const remainingPostIds = currentPostIds.filter( + (id) => !deletedIds.includes(id) + ); + if (remainingPostIds.length !== currentPostIds.length) { + navigate({ + search: { + ...searchParams, + postIds: remainingPostIds.length > 0 ? remainingPostIds : void 0 + } + }); + } else { + invalidate(); + } + }, + [invalidate, searchParams, navigate] + ); + const postTypeActions = usePostActions({ + postType: "wp_template_part", + context: "list", + onActionPerformed: (actionId, items) => { + if (actionId === "move-to-trash" || actionId === "permanently-delete") { + cleanupDeletedPostIdsFromUrl(items); + } + } + }); + const actions = (0, import_element57.useMemo)(() => { + return [ + ...postTypeActions?.flatMap( + (action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + } + ) + ]; + }, [postTypeActions]); + const handleTabChange = (0, import_element57.useCallback)( + (areaSlug) => { + navigate({ + to: `/template-parts/list/${areaSlug}` + }); + }, + [navigate] + ); + if (!postTypeObject) { + return null; + } + const selection = searchParams.postIds ?? []; + if (view.type === "list" && selection.length === 0 && posts?.length > 0) { + selection.push(posts[0].id.toString()); + } + if (view.type === "list") { + selection.splice(1); + } + return /* @__PURE__ */ React.createElement( + page_default, + { + title: postTypeObject.labels?.name, + subTitle: postTypeObject.labels?.description, + className: "template-part-page", + actions: /* @__PURE__ */ React.createElement(React.Fragment, null, isModified && /* @__PURE__ */ React.createElement( + import_components49.Button, + { + variant: "tertiary", + size: "compact", + onClick: onReset + }, + (0, import_i18n45.__)("Reset view") + ), labels?.add_new_item && canCreateRecord && /* @__PURE__ */ React.createElement( + import_components49.Button, + { + variant: "primary", + onClick: () => setShowTemplatePartModal(true), + size: "compact" + }, + labels.add_new_item + )), + hasPadding: false + }, + DEFAULT_VIEWS.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "routes-template-part-list__tabs-wrapper" }, /* @__PURE__ */ React.createElement( + Tabs, + { + onSelect: handleTabChange, + selectedTabId: area ?? "all" + }, + /* @__PURE__ */ React.createElement(Tabs.TabList, null, DEFAULT_VIEWS.map( + (filter) => /* @__PURE__ */ React.createElement( + Tabs.Tab, + { + tabId: filter.slug, + key: filter.slug + }, + filter.label + ) + )) + )), + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: posts, + fields, + view, + onChangeView, + actions, + isLoading: isResolving, + paginationInfo: { + totalItems, + totalPages + }, + defaultLayouts: DEFAULT_LAYOUTS, + getItemId, + selection, + onChangeSelection: (items) => { + navigate({ + search: { + ...searchParams, + postIds: items.length > 0 ? items : void 0, + edit: items.length === 0 ? void 0 : searchParams.edit + } + }); + }, + renderItemLink: ({ + item, + ...props + }) => /* @__PURE__ */ React.createElement( + Link, + { + to: `/types/wp_template_part/edit/${encodeURIComponent( + item.id + )}`, + ...props, + onClick: (event) => { + event.stopPropagation(); + } + } + ) + } + ), + showTemplatePartModal && /* @__PURE__ */ React.createElement( + CreateTemplatePartModal, + { + closeModal: () => setShowTemplatePartModal(false), + blocks: [], + onCreate: (templatePart) => { + setShowTemplatePartModal(false); + navigate({ + to: `/types/wp_template_part/edit/${encodeURIComponent( + templatePart.id + )}` + }); + }, + onError: () => setShowTemplatePartModal(false), + defaultArea: area !== "all" ? area : "uncategorized" + } + ) + ); +} +var stage = TemplatePartList; +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. + *) +*/ diff --git a/src/wp-includes/build/routes/template-part-list/content.min.asset.php b/src/wp-includes/build/routes/template-part-list/content.min.asset.php new file mode 100644 index 0000000000000..37e482c2a01a0 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/content.min.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-patterns', '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/lazy-editor', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '4e3faa4a690807d2175d'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template-part-list/content.min.js b/src/wp-includes/build/routes/template-part-list/content.min.js new file mode 100644 index 0000000000000..31aaf0f36d0c8 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/content.min.js @@ -0,0 +1,14 @@ +var ab=Object.create;var Fc=Object.defineProperty;var sb=Object.getOwnPropertyDescriptor;var lb=Object.getOwnPropertyNames;var ub=Object.getPrototypeOf,cb=Object.prototype.hasOwnProperty;var De=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var db=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of lb(t))!cb.call(e,n)&&n!==r&&Fc(e,n,{get:()=>t[n],enumerable:!(o=sb(t,n))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?ab(ub(e)):{},db(t||!e||!e.__esModule?Fc(r,"default",{value:e,enumerable:!0}):r,e));var z=De((Ly,Bc)=>{Bc.exports=window.wp.element});var $t=De((jy,Hc)=>{Hc.exports=window.wp.data});var Gs=De((By,zc)=>{zc.exports=window.wp.preferences});var At=De((Jy,Wc)=>{Wc.exports=window.wp.compose});var me=De((e1,Gc)=>{Gc.exports=window.React});var I=De((r1,Uc)=>{Uc.exports=window.ReactJSXRuntime});var sd=De((T1,ad)=>{ad.exports=window.ReactDOM});var ud=De(ld=>{"use strict";var Bo=me();function Tb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ab=typeof Object.is=="function"?Object.is:Tb,Ib=Bo.useState,Vb=Bo.useEffect,Rb=Bo.useLayoutEffect,kb=Bo.useDebugValue;function Db(e,t){var r=t(),o=Ib({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return Rb(function(){n.value=r,n.getSnapshot=t,rl(n)&&i({inst:n})},[e,r,t]),Vb(function(){return rl(n)&&i({inst:n}),e(function(){rl(n)&&i({inst:n})})},[e]),kb(r),r}function rl(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Ab(e,r)}catch{return!0}}function Nb(e,t){return t()}var Mb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Nb:Db;ld.useSyncExternalStore=Bo.useSyncExternalStore!==void 0?Bo.useSyncExternalStore:Mb});var dd=De((I1,cd)=>{"use strict";cd.exports=ud()});var Z=De((D1,pd)=>{pd.exports=window.wp.i18n});var pe=De((N1,vd)=>{vd.exports=window.wp.primitives});var Kl=De((WS,hd)=>{hd.exports=window.wp.privateApis});var U=De(($S,Ed)=>{Ed.exports=window.wp.components});var Xl=De((KS,Pd)=>{Pd.exports=window.wp.keycodes});var cp=De((zI,Ya)=>{var sp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},lp=Object.keys(sp).join("|"),q_=new RegExp(lp,"g"),Y_=new RegExp(lp,"");function U_(e){return sp[e]}var up=function(e){return e.replace(q_,U_)},$_=function(e){return!!e.match(Y_)};Ya.exports=up;Ya.exports.has=$_;Ya.exports.remove=up});var wp=De((ZI,xp)=>{"use strict";xp.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,i;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(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var No=De((gk,ev)=>{ev.exports=window.wp.date});var Pv=De((uD,Ev)=>{Ev.exports=window.wp.warning});var Ms=De((OF,yh)=>{yh.exports=window.wp.coreData});var Ch=De((TF,Sh)=>{Sh.exports=window.wp.editor});var Ph=De((AF,Eh)=>{Eh.exports=window.wp.notices});var Th=De((IF,Oh)=>{Oh.exports=window.wp.blocks});import{useParams as Ey,useNavigate as Py,useSearch as Oy,Link as Ty,useInvalidate as Ay}from"@wordpress/route";var Lc=Object.prototype.hasOwnProperty;function jc(e,t,r){for(r of e.keys())if(Mr(r,t))return r}function Mr(e,t){var r,o,n;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((o=e.length)===t.length)for(;o--&&Mr(e[o],t[o]););return o===-1}if(r===Set){if(e.size!==t.size)return!1;for(o of e)if(n=o,n&&typeof n=="object"&&(n=jc(t,n),!n)||!t.has(n))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(o of e)if(n=o[0],n&&typeof n=="object"&&(n=jc(t,n),!n)||!Mr(o[1],t.get(n)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((o=e.byteLength)===t.byteLength)for(;o--&&e.getInt8(o)===t.getInt8(o););return o===-1}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===t.byteLength)for(;o--&&e[o]===t[o];);return o===-1}if(!r||typeof e=="object"){o=0;for(r in e)if(Lc.call(e,r)&&++o&&!Lc.call(t,r)||!(r in t)||!Mr(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var Pn=u(z(),1),wi=u($t(),1),Us=u(Gs(),1);function qs(e,t,r){return`dataviews-${e}-${t}-${r}`}function Ys(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(a=>a.field)),i=(e.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(o={...o,sort:t.sort}),o}function xi(e,t,r){if(!t)return e;let o=e;if(t.filters&&t.filters.length>0){let n=new Set(t.filters.map(i=>i.field));o={...o,filters:(e.filters??[]).filter(i=>!n.has(i.field))}}return t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),o}function fb(e,t){let r={...e};for(let o of t)delete r[o];return r}function $s(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:s}=e,l=qs(t,r,o),c=(0,wi.useSelect)(w=>w(Us.store).get("core/views",l),[l]),{set:d}=(0,wi.useDispatch)(Us.store),f=c??n,m=Number(a?.page??f.page??1),p=a?.search??f.search??"",v=(0,Pn.useMemo)(()=>Ys({...f,page:m,search:p},i,n),[f,m,p,i,n]),x=!!c,_=(0,Pn.useCallback)(w=>{let S={page:w?.page,search:w?.search},A=xi(fb(w,["page","search"]),i,n);s&&!Mr(S,{page:m,search:p})&&s(S);let O=xi(f,i,n),R=xi(n,i,n);Mr(O,A)||(Mr(A,R)?d("core/views",l,void 0):d("core/views",l,A))},[s,m,p,f,n,i,d,l]),y=(0,Pn.useCallback)(()=>{d("core/views",l,void 0)},[l,d]);return{view:v,isModified:x,updateView:_,resetToDefault:y}}var mb=u($t(),1),pb=u(Gs(),1);var Tt=u(z(),1),Ns=u(At(),1);var Yc=u(me(),1),qc={};function Ks(e,t){let r=Yc.useRef(qc);return r.current===qc&&(r.current=e(t)),r}function Zs(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var Si=u(me(),1);function Xs(e,t,r,o){let n=Ks(Kc).current;return gb(n,e,t,r,o)&&Zc(n,[e,t,r,o]),n.callback}function $c(e){let t=Ks(Kc).current;return hb(t,e)&&Zc(t,e),t.callback}function Kc(){return{callback:null,cleanup:null,refs:[]}}function gb(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function hb(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Zc(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{for(let n=0;n=e}function Qs(e){if(!Jc.isValidElement(e))return null;let t=e,r=t.props;return(Qc(19)?r?.ref:t.ref)??null}function On(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function ed(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function td(e,t){return typeof e=="function"?e(t):e}function rd(e,t){return typeof e=="function"?e(t):e}var An={};function yi(e,t,r,o,n){let i={...Js(e,An)};return t&&(i=Tn(i,t)),r&&(i=Tn(i,r)),o&&(i=Tn(i,o)),n&&(i=Tn(i,n)),i}function od(e){if(e.length===0)return An;if(e.length===1)return Js(e[0],An);let t={...Js(e[0],An)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function nd(e){return typeof e=="function"}function Js(e,t){return nd(e)?e(t):e??An}function wb(e,t){return t?e?r=>{if(Sb(r)){let n=r;yb(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function yb(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function el(e,t){return t?e?t+" "+e:t:e}function Sb(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Cb=Object.freeze([]),Fr=Object.freeze({});var tl=u(me(),1);function id(e,t,r={}){let o=t.render,n=Eb(t,r);if(r.enabled===!1)return null;let i=r.state??Fr;return Pb(e,o,n,i)}function Eb(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Fr,ref:a,props:s,stateAttributesMapping:l,enabled:c=!0}=t,d=c?td(r,i):void 0,f=c?rd(o,i):void 0,m=c?ed(i,l):Fr,p=c?On(m,Array.isArray(s)?od(s):s)??Fr:Fr;return typeof document<"u"&&(c?Array.isArray(a)?p.ref=$c([p.ref,Qs(n),...a]):p.ref=Xs(p.ref,Qs(n),a):Xs(null,null)),c?(d!==void 0&&(p.className=el(p.className,d)),f!==void 0&&(p.style=On(p.style,f)),p):Fr}function Pb(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=yi(r,t.props);return n.ref=r.ref,Si.cloneElement(t,n)}if(e&&typeof e=="string")return Ob(e,r);throw new Error(Zs(8))}function Ob(e,t){return e==="button"?(0,tl.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,tl.createElement)("img",{alt:"",...t,key:t.key}):Si.createElement(e,t)}function fd(e){return id(e.defaultTagName??"div",e,e)}function md(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{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,sa.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});Cd.displayName="DataViewsContext";var $=Cd;var yr=u(Z(),1);var xo=u(Z(),1),Nn=u(U(),1),Vt=u(z(),1),ou=u(Xl(),1);var Od=u(U(),1),Td=u(Z(),1),Ad=u(I(),1);function $r({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),c=n?.getValue?.({item:r})||(0,Td.__)("(no title)");return(0,Ad.jsx)(Od.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":c,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(d=>s!==d):[...e,s])},...a})}var bo=u(U(),1),Rd=u(Z(),1),zo=u(z(),1);var kd=u($t(),1),Ql=u(At(),1);var Id=u(Kl(),1),{lock:XS,unlock:J}=(0,Id.__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/dataviews");var be=u(I(),1),{Menu:ho,kebabCase:jb}=J(bo.privateApis);function Bb({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,be.jsx)(bo.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function Hb({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,be.jsx)(ho.Item,{disabled:e.disabled,onClick:t,children:(0,be.jsx)(ho.ItemLabel,{children:o})})}function _o({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,be.jsx)(bo.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${jb(e.id)}`,children:(0,be.jsx)(e.RenderModal,{items:t,closeModal:r})})}function Jl({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,zo.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,be.jsx)(Hb,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,be.jsxs)(ho.Group,{children:[a(n),n.length>0&&i.length>0&&(0,be.jsx)(ho.Separator,{}),a(i)]})}function Wo({item:e,actions:t,isCompact:r}){let o=(0,kd.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,zo.useMemo)(()=>{let s=t.filter(c=>!c.isEligible||c.isEligible(e));return{primaryActions:s.filter(c=>c.isPrimary),eligibleActions:s}},[t,e]),a=(0,Ql.useViewportMatch)("medium","<");return r?(0,be.jsx)(Vd,{item:e,actions:i,isSmall:!0,registry:o}):(0,be.jsxs)(F,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,be.jsx)(eu,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function eu({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,zo.useState)(null);return(0,Ql.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,be.jsxs)(be.Fragment,{children:[t.map(s=>(0,be.jsx)(Bb,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,be.jsx)(_o,{action:n,items:[e],closeModal:()=>i(null)})]})}var Go=u(U(),1),la=u(Z(),1),mt=u(z(),1),Fd=u($t(),1);var tu=u(At(),1);var Kr=u(Z(),1);function Dd(e,t,r){return e>0?(0,Kr.sprintf)((0,Kr._n)("%d Item selected","%d Items selected",e),e):r>t?(0,Kr.sprintf)((0,Kr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,Kr.sprintf)((0,Kr._n)("%d Item","%d Items",t),t)}var Ue=u(I(),1);function zb({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,mt.useState)(!1);return(0,Ue.jsxs)(Ue.Fragment,{children:[(0,Ue.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,Ue.jsx)(_o,{action:e,items:t,closeModal:()=>n(!1)})]})}function ua(e,t){return(0,mt.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function qo(e,t){return(0,mt.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function Dn({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,mt.useMemo)(()=>r.filter(l=>o.some(c=>c.supportsBulk&&(!c.isEligible||c.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,Ue.jsx)(Go.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,la.__)("Deselect all"):(0,la.__)("Select all")})}function Nd({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,tu.useViewportMatch)("medium","<")?(0,Ue.jsx)(Go.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,Ue.jsx)(Go.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var Ld=[];function Wb({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,Fd.useRegistry)(),i=(0,mt.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,Ue.jsx)(zb,{action:e,items:i,ActionTriggerComponent:Nd},e.id):(0,Ue.jsx)(Nd,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function Md(e,t,r,o,n,i,a,s,l,c){let d=Dd(o.length,e.length,c.totalItems);return(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,Ue.jsx)(Dn,{selection:o,onChangeSelection:l,data:e,actions:t,getItemId:r}),(0,Ue.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:d}),(0,Ue.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(f=>(0,Ue.jsx)(Wb,{action:f,selectedItems:i,actionInProgress:a,setActionInProgress:s},f.id)),i.length>0&&(0,Ue.jsx)(Go.Button,{icon:In,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,la.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{l(Ld)}})]})]})}function Gb({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,s]=(0,mt.useState)(null),l=(0,mt.useRef)(null),c=(0,tu.useViewportMatch)("medium","<"),d=(0,mt.useMemo)(()=>t.filter(v=>v.supportsBulk),[t]),f=(0,mt.useMemo)(()=>o.filter(v=>d.some(x=>!x.isEligible||x.isEligible(v))),[o,d]),m=(0,mt.useMemo)(()=>o.filter(v=>e.includes(n(v))&&f.includes(v)),[e,o,n,f]),p=(0,mt.useMemo)(()=>t.filter(v=>v.supportsBulk&&(!c||v.icon)&&m.some(x=>!v.isEligible||v.isEligible(x))),[t,m,c]);if(a)l.current||(l.current=Md(o,t,n,e,p,m,a,s,r,i));else return l.current&&(l.current=null),Md(o,t,n,e,p,m,a,s,r,i);return l.current}function ca(){let{data:e,selection:t,actions:r=Ld,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,mt.useContext)($);return(0,Ue.jsx)(Gb,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var _r=u(Z(),1);var xr=u(U(),1),Zr=u(z(),1);function da(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var te=u(I(),1),{Menu:ve}=J(xr.privateApis);function qb({children:e}){return Zr.Children.toArray(e).filter(Boolean).map((t,r)=>(0,te.jsxs)(Zr.Fragment,{children:[r>0&&(0,te.jsx)(ve.Separator,{}),t]},r))}var Yb=(0,Zr.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:c=!0},d){let f=r.fields??[],m=f?.indexOf(t),p=r.sort?.field===t,v=!1,x=!1,_=!1,y=[],w=o.find(E=>E.id===t),{setIsShowingFilter:S}=(0,Zr.useContext)($);if(!w)return null;v=w.enableHiding!==!1,x=w.enableSorting!==!1;let A=w.header;if(y=!!w.filterBy&&w.filterBy?.operators||[],_=!r.filters?.some(E=>t===E.field)&&!!(w.hasElements||w.Edit)&&w.filterBy!==!1&&!w.filterBy?.isPrimary,!x&&!s&&!v&&!_)return A;let O=da(r,o).filter(E=>!f.includes(E.id)),R=(l||c)&&!!O.length,N=(0,_r.isRTL)();return(0,te.jsxs)(ve,{children:[(0,te.jsxs)(ve.TriggerButton,{render:(0,te.jsx)(xr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:d,variant:"tertiary"}),children:[A,r.sort&&p&&(0,te.jsx)("span",{"aria-hidden":"true",children:bd[r.sort.direction]})]}),(0,te.jsx)(ve.Popover,{style:{minWidth:"240px"},children:(0,te.jsxs)(qb,{children:[x&&(0,te.jsx)(ve.Group,{children:oa.map(E=>{let C=r.sort&&p&&r.sort.direction===E,k=`${t}-${E}`;return(0,te.jsx)(ve.RadioItem,{name:"view-table-sorting",value:k,checked:C,onChange:()=>{n({...r,sort:{field:t,direction:E},showLevels:!1})},children:(0,te.jsx)(ve.ItemLabel,{children:ia[E]})},k)})}),_&&(0,te.jsx)(ve.Group,{children:(0,te.jsx)(ve.Item,{prefix:(0,te.jsx)(xr.Icon,{icon:Vn}),onClick:()=>{a(t),S(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:y[0]}]})},children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Add filter")})})}),(s||v||R)&&w&&(0,te.jsxs)(ve.Group,{children:[s&&(0,te.jsx)(ve.Item,{prefix:(0,te.jsx)(xr.Icon,{icon:al}),disabled:N?m>=f.length-1:m<1,onClick:()=>{let E=N?m+1:m-1,C=[...f];C.splice(m,1),C.splice(E,0,t),n({...r,fields:C})},children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Move left")})}),s&&(0,te.jsx)(ve.Item,{prefix:(0,te.jsx)(xr.Icon,{icon:ll}),disabled:N?m<1:m>=f.length-1,onClick:()=>{let E=N?m-1:m+1,C=[...f];C.splice(m,1),C.splice(E,0,t),n({...r,fields:C})},children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Move right")})}),l&&!!O.length&&(0,te.jsxs)(ve,{children:[(0,te.jsx)(ve.SubmenuTriggerItem,{children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Insert left")})}),(0,te.jsx)(ve.Popover,{children:O.map(E=>{let C=N?m+1:m;return(0,te.jsx)(ve.Item,{onClick:()=>{n({...r,fields:[...f.slice(0,C),E.id,...f.slice(C)]})},children:(0,te.jsx)(ve.ItemLabel,{children:E.label})},E.id)})})]}),c&&!!O.length&&(0,te.jsxs)(ve,{children:[(0,te.jsx)(ve.SubmenuTriggerItem,{children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Insert right")})}),(0,te.jsx)(ve.Popover,{children:O.map(E=>{let C=N?m:m+1;return(0,te.jsx)(ve.Item,{onClick:()=>{n({...r,fields:[...f.slice(0,C),E.id,...f.slice(C)]})},children:(0,te.jsx)(ve.ItemLabel,{children:E.label})},E.id)})})]}),v&&w&&(0,te.jsx)(ve.Item,{prefix:(0,te.jsx)(xr.Icon,{icon:kn}),onClick:()=>{i(w),n({...r,fields:f.filter(E=>E!==t)})},children:(0,te.jsx)(ve.ItemLabel,{children:(0,_r.__)("Hide column")})})]})]})})]})}),Ub=Yb,Yo=Ub;var jd=u(z(),1),ru=u(I(),1);function $b({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function Xr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,ru.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,jd.cloneElement)(l,{onClick:c=>{c.stopPropagation(),l.props.onClick&&l.props.onClick(c)},onKeyDown:c=>{(c.key==="Enter"||c.key===""||c.key===" ")&&(c.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(c))}})}let s=$b({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,ru.jsx)("div",{...s,...a,children:i})}var rr=u(I(),1);function Kb({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,rr.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,rr.jsx)(Xr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,rr.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,rr.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,rr.jsxs)(Xr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,rr.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,rr.jsx)(r.render,{item:e,field:r})]}),n&&(0,rr.jsx)(n.render,{item:e,field:n})]})]})}var fa=Kb;var Bd=u(At(),1),Uo=u(z(),1),Hd=u(Z(),1),Zb=e=>(0,Hd.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function zd({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Uo.useState)(!1),n=(0,Bd.useDebounce)((0,Uo.useCallback)(()=>{let i=e.current;i&&o(Zb(i))},[e,o]),200);return(0,Uo.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function Bt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Qr=u(U(),1),Gd=u(Z(),1),qd=u(z(),1);var Nt=u(I(),1);function Wd({field:e,isVisible:t,onToggleVisibility:r}){return(0,Nt.jsx)(Qr.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,Nt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Nt.jsx)("div",{style:{height:24,width:24},children:t&&(0,Nt.jsx)(Qr.Icon,{icon:go})}),(0,Nt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function Xb(e){return!!e}function ma({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,qd.useContext)($),n=da(t,r);if(!n?.length)return null;let i=r.find(v=>v.id===t.titleField),a=r.find(v=>v.id===t.mediaField),s=r.find(v=>v.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:v})=>Xb(v)),c=t.fields??[],d=n.filter(v=>c.includes(v.id)).length,f=l.filter(({isVisibleFlag:v})=>t[v]??!0),m=f.length+d,p=m===1&&f.length===1;return(0,Nt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[e&&(0,Nt.jsx)(Qr.BaseControl.VisualLabel,{children:(0,Gd.__)("Properties")}),(0,Nt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Nt.jsxs)(Qr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:v,isVisibleFlag:x})=>{let _=t[x]??!0,y=p&&_?{...v,enableHiding:!1}:v;return(0,Nt.jsx)(Wd,{field:y,isVisible:_,onToggleVisibility:()=>{o({...t,[x]:!_})}},v.id)}),n.map(v=>{let x=c.includes(v.id),_=m===1&&x?{...v,enableHiding:!1}:v;return(0,Nt.jsx)(Wd,{field:_,isVisible:x,onToggleVisibility:()=>{o({...t,fields:x?c.filter(y=>y!==v.id):[...c,v.id]})}},v.id)})]})})]})}var X=u(I(),1);function Qb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,X.jsx)("div",{className:i,children:(0,X.jsx)(n.render,{item:e,field:n})})}function Yd({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:c,selection:d,getItemId:f,isItemClickable:m,onClickItem:p,renderItemLink:v,onChangeSelection:x,isActionsColumnSticky:_,posinset:y}){let{paginationInfo:w}=(0,Vt.useContext)($),S=ua(o,t),A=S&&d.includes(i),{showTitle:O=!0,showMedia:R=!0,showDescription:N=!0,infiniteScrollEnabled:E}=a,C=(0,Vt.useRef)(!1),k=a.fields??[],M=s&&O||l&&R||c&&N;return(0,X.jsxs)("tr",{className:Y("dataviews-view-table__row",{"is-selected":S&&A,"has-bulk-actions":S}),onTouchStart:()=>{C.current=!0},"aria-setsize":E?w.totalItems:void 0,"aria-posinset":y,role:E?"article":void 0,onMouseDown:V=>{let h=(0,ou.isAppleOS)()?V.metaKey:V.ctrlKey;V.button===0&&h&&window.navigator.userAgent.toLowerCase().includes("firefox")&&V?.preventDefault()},onClick:V=>{if(!S)return;((0,ou.isAppleOS)()?V.metaKey:V.ctrlKey)&&!C.current&&document.getSelection()?.type!=="Range"&&x(d.includes(i)?d.filter(g=>i!==g):[...d,i])},children:[e&&(0,X.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,X.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,X.jsx)($r,{item:t,selection:d,onChangeSelection:x,getItemId:f,titleField:s,disabled:!S})})}),M&&(0,X.jsx)("td",{children:(0,X.jsx)(fa,{item:t,level:r,titleField:O?s:void 0,mediaField:R?l:void 0,descriptionField:N?c:void 0,isItemClickable:m,onClickItem:p,renderItemLink:v})}),k.map(V=>{let{width:h,maxWidth:g,minWidth:T,align:b}=a.layout?.styles?.[V]??{};return(0,X.jsx)("td",{style:{width:h,maxWidth:g,minWidth:T},children:(0,X.jsx)(Qb,{fields:n,item:t,column:V,align:b})},V)}),!!o?.length&&(0,X.jsx)("td",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":_}),onClick:V=>V.stopPropagation(),children:(0,X.jsx)(Wo,{item:t,actions:o})})]})}function Jb({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:c,onClickItem:d,isItemClickable:f,renderItemLink:m,view:p,className:v,empty:x}){let{containerRef:_}=(0,Vt.useContext)($),y=(0,Vt.useRef)(new Map),w=(0,Vt.useRef)(),[S,A]=(0,Vt.useState)(),O=qo(e,t),[R,N]=(0,Vt.useState)(null);(0,Vt.useEffect)(()=>{w.current&&(w.current.focus(),w.current=void 0)});let E=(0,Vt.useId)(),C=zd({scrollContainerRef:_,enabled:!!e?.length});if(S){w.current=S,A(void 0);return}let k=q=>{let Ie=y.current.get(q.id),Je=Ie?y.current.get(Ie.fallback):void 0;A(Je?.node)},M=q=>{q.preventDefault(),q.stopPropagation();let Ie={getBoundingClientRect:()=>({x:q.clientX,y:q.clientY,top:q.clientY,left:q.clientX,right:q.clientX,bottom:q.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{N(Ie)})},V=!!t?.length,h=r.find(q=>q.id===p.titleField),g=r.find(q=>q.id===p.mediaField),T=r.find(q=>q.id===p.descriptionField),b=p.groupBy?.field?r.find(q=>q.id===p.groupBy?.field):null,D=b?Bt(t,b):null,{showTitle:B=!0,showMedia:P=!0,showDescription:G=!0}=p,K=h&&B||g&&P||T&&G,Qe=p.fields??[],ot=(q,Ie)=>Je=>{Je?y.current.set(q,{node:Je,fallback:Qe[Ie>0?Ie-1:1]}):y.current.delete(q)},fe=p.infiniteScrollEnabled&&!D,Oe=(0,xo.isRTL)();return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)("table",{className:Y("dataviews-view-table",v,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":O}),"aria-busy":i,"aria-describedby":E,role:fe?"feed":void 0,children:[(0,X.jsxs)("colgroup",{children:[O&&(0,X.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),K&&(0,X.jsx)("col",{className:"dataviews-view-table__col-first-data"}),Qe.map((q,Ie)=>(0,X.jsx)("col",{className:Y(`dataviews-view-table__col-${q}`,{"dataviews-view-table__col-first-data":!K&&Ie===0})},`col-${q}`)),!!e?.length&&(0,X.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),R&&(0,X.jsx)(Nn.Popover,{anchor:R,onClose:()=>N(null),placement:"bottom-start",children:(0,X.jsx)(ma,{showLabel:!1})}),(0,X.jsx)("thead",{onContextMenu:M,children:(0,X.jsxs)("tr",{className:"dataviews-view-table__row",children:[O&&(0,X.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:M,children:(0,X.jsx)(Dn,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),K&&(0,X.jsx)("th",{scope:"col",children:h&&(0,X.jsx)(Yo,{ref:ot(h.id,0),fieldId:h.id,view:p,fields:r,onChangeView:a,onHide:k,setOpenedFilter:c,canMove:!1,canInsertLeft:Oe?p.layout?.enableMoving??!0:!1,canInsertRight:Oe?!1:p.layout?.enableMoving??!0})}),Qe.map((q,Ie)=>{let{width:Je,maxWidth:Ut,minWidth:Nr,align:jo}=p.layout?.styles?.[q]??{},po=p.layout?.enableMoving??!0;return(0,X.jsx)("th",{style:{width:Je,maxWidth:Ut,minWidth:Nr,textAlign:jo},"aria-sort":p.sort?.direction&&p.sort?.field===q?na[p.sort.direction]:void 0,scope:"col",children:(0,X.jsx)(Yo,{ref:ot(q,Ie),fieldId:q,view:p,fields:r,onChangeView:a,onHide:k,setOpenedFilter:c,canMove:po,canInsertLeft:po,canInsertRight:po})},q)}),!!e?.length&&(0,X.jsx)("th",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!C}),children:(0,X.jsx)("span",{className:"dataviews-view-table-header",children:(0,xo.__)("Actions")})})]})}),V&&b&&D?Array.from(D.entries()).map(([q,Ie])=>(0,X.jsxs)("tbody",{children:[(0,X.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,X.jsx)("td",{colSpan:Qe.length+(K?1:0)+(O?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?q:(0,xo.sprintf)((0,xo.__)("%1$s: %2$s"),b.label,q)})}),Ie.map((Je,Ut)=>(0,X.jsx)(Yd,{item:Je,level:p.showLevels&&typeof n=="function"?n(Je):void 0,hasBulkActions:O,actions:e,fields:r,id:o(Je)||Ut.toString(),view:p,titleField:h,mediaField:g,descriptionField:T,selection:l,getItemId:o,onChangeSelection:s,onClickItem:d,renderItemLink:m,isItemClickable:f,isActionsColumnSticky:!C},o(Je)))]},`group-${q}`)):(0,X.jsx)("tbody",{children:V&&t.map((q,Ie)=>(0,X.jsx)(Yd,{item:q,level:p.showLevels&&typeof n=="function"?n(q):void 0,hasBulkActions:O,actions:e,fields:r,id:o(q)||Ie.toString(),view:p,titleField:h,mediaField:g,descriptionField:T,selection:l,getItemId:o,onChangeSelection:s,onClickItem:d,renderItemLink:m,isItemClickable:f,isActionsColumnSticky:!C,posinset:fe?Ie+1:void 0},o(q)))})]}),(0,X.jsxs)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!V&&!i}),id:E,children:[!V&&(i?(0,X.jsx)("p",{children:(0,X.jsx)(Nn.Spinner,{})}):x),V&&i&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(Nn.Spinner,{})})]})]})}var Ud=Jb;var iu=u(U(),1),ga=u(Z(),1);var Mt=u(U(),1);var Mn=u(Z(),1),Kd=u(At(),1),Zd=u(Xl(),1),va=u(z(),1);var e0=u(U(),1),t0=u(Z(),1),pa=u(z(),1);var r0=u(I(),1),o0=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],n0=o0[2].value;function $d(){let e=(0,pa.useContext)($),t=e.view;return(0,pa.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??n0,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ue=u(I(),1),{Badge:i0}=J(Mt.privateApis);function a0(e,t){let r=[];for(let o=0,n=e.length;o{if(y.onClickCapture?.(b),(0,Zd.isAppleOS)()?b.metaKey:b.ctrlKey){if(b.stopPropagation(),b.preventDefault(),!R)return;o(r.includes(N)?r.filter(D=>N!==D):[...r,N])}},children:[(0,ue.jsx)(Xr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:Y("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!M}),...g,children:V}),x&&(0,ue.jsx)($r,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:f,disabled:!R}),!!c?.length&&(0,ue.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ue.jsx)(Wo,{item:l,actions:c,isCompact:!0})}),S&&(0,ue.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ue.jsx)(Xr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...T,title:f?.getValueFormatted({item:l,field:f})||void 0,children:h})}),(0,ue.jsxs)(F,{direction:"column",gap:"xs",children:[O&&m?.render&&(0,ue.jsx)(m.render,{item:l,field:m}),!!v?.length&&(0,ue.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(b=>(0,ue.jsx)(i0,{className:"dataviews-view-grid__field-value",children:(0,ue.jsx)(b.render,{item:l,field:b})},b.id))}),!!p?.length&&(0,ue.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(b=>(0,ue.jsx)(Mt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)(Mt.Tooltip,{text:b.label,children:(0,ue.jsx)(Mt.FlexItem,{className:"dataviews-view-grid__field-name",children:b.header})}),(0,ue.jsx)(Mt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ue.jsx)(b.render,{item:l,field:b})})]})},b.id))})]})]})});function nu({data:e,isInfiniteScroll:t,className:r,isLoading:o,view:n,fields:i,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:c,renderItemLink:d,getItemId:f,actions:m}){let{paginationInfo:p,resizeObserverRef:v}=(0,va.useContext)($),x=$d(),_=qo(m,e),y=i.find(C=>C.id===n?.titleField),w=i.find(C=>C.id===n?.mediaField),S=i.find(C=>C.id===n?.descriptionField),A=n.fields??[],{regularFields:O,badgeFields:R}=A.reduce((C,k)=>{let M=i.find(h=>h.id===k);if(!M)return C;let V=n.layout?.badgeFields?.includes(k)?"badgeFields":"regularFields";return C[V].push(M),C},{regularFields:[],badgeFields:[]}),N="900px",E=Math.ceil(e.length/x);return(0,ue.jsx)(Mt.Composite,{role:t?"feed":"grid",className:Y("dataviews-view-grid",r),focusWrap:!0,"aria-busy":o,"aria-rowcount":t?void 0:E,ref:v,children:a0(e,x).map((C,k)=>(0,ue.jsx)(Mt.Composite.Row,{render:(0,ue.jsx)("div",{role:"row","aria-rowindex":k+1,"aria-label":(0,Mn.sprintf)((0,Mn.__)("Row %d"),k+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${x}, minmax(0, 1fr) )`}}),children:C.map((M,V)=>{let h=k*x+V;return(0,ue.jsx)(Mt.Composite.Item,{render:g=>(0,ue.jsx)(s0,{...g,role:t?"article":"gridcell","aria-setsize":t?p.totalItems:void 0,"aria-posinset":t?h+1:void 0,view:n,selection:a,onChangeSelection:s,onClickItem:l,isItemClickable:c,renderItemLink:d,getItemId:f,item:M,actions:m,mediaField:w,titleField:y,descriptionField:S,regularFields:O,badgeFields:R,hasBulkActions:_,config:{sizes:N}})},f(M))})},k))})}var wt=u(I(),1);function l0({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:c,view:d,className:f,empty:m}){let p=!!t?.length,v=d.groupBy?.field?r.find(w=>w.id===d.groupBy?.field):null,x=v?Bt(t,v):null,_=d.infiniteScrollEnabled&&!x,y={className:f,isLoading:n,view:d,fields:r,selection:c,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,wt.jsxs)(wt.Fragment,{children:[p&&v&&x&&(0,wt.jsx)(F,{direction:"column",gap:"lg",children:Array.from(x.entries()).map(([w,S])=>(0,wt.jsxs)(F,{direction:"column",gap:"sm",children:[(0,wt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:d.groupBy?.showLabel===!1?w:(0,ga.sprintf)((0,ga.__)("%1$s: %2$s"),v.label,w)}),(0,wt.jsx)(nu,{...y,data:S,isInfiniteScroll:!1})]},w))}),p&&!x&&(0,wt.jsx)(nu,{...y,data:t,isInfiniteScroll:!!_}),!p&&(0,wt.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,wt.jsx)("p",{children:(0,wt.jsx)(iu.Spinner,{})}):m}),p&&n&&(0,wt.jsx)("p",{className:"dataviews-loading-more",children:(0,wt.jsx)(iu.Spinner,{})})]})}var Xd=l0;var ha=u(At(),1),$e=u(U(),1),Ge=u(z(),1),Fn=u(Z(),1);var uu=u($t(),1);var W=u(I(),1),{Menu:au}=J($e.privateApis);function su(e){return`${e}-item-wrapper`}function u0(e,t){return`${e}-primary-action-${t}`}function lu(e){return`${e}-dropdown`}function c0({idPrefix:e,primaryAction:t,item:r}){let o=(0,uu.useRegistry)(),[n,i]=(0,Ge.useState)(!1),a=u0(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:a,render:(0,W.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,W.jsx)(_o,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:a,render:(0,W.jsx)($e.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function Qd({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:c,onDropdownTriggerKeyDown:d,posinset:f}){let{showTitle:m=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:x}=e,_=(0,Ge.useRef)(null),y=`${r}-label`,w=`${r}-description`,S=(0,uu.useRegistry)(),[A,O]=(0,Ge.useState)(!1),[R,N]=(0,Ge.useState)(null),E=({type:b})=>{O(b==="mouseenter")},{paginationInfo:C}=(0,Ge.useContext)($);(0,Ge.useEffect)(()=>{o&&_.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:k,eligibleActions:M}=(0,Ge.useMemo)(()=>{let b=t.filter(B=>!B.isEligible||B.isEligible(n));return{primaryAction:b.filter(B=>B.isPrimary)[0],eligibleActions:b}},[t,n]),V=k&&t.length===1,h=p&&a?.render?(0,W.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,W.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,g=m&&i?.render?(0,W.jsx)(i.render,{item:n,field:i}):null,T=M?.length>0&&(0,W.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[k&&(0,W.jsx)(c0,{idPrefix:r,primaryAction:k,item:n}),!V&&(0,W.jsxs)("div",{role:"gridcell",children:[(0,W.jsxs)(au,{placement:"bottom-end",children:[(0,W.jsx)(au.TriggerButton,{render:(0,W.jsx)($e.Composite.Item,{id:lu(r),render:(0,W.jsx)($e.Button,{size:"small",icon:Rn,label:(0,Fn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:d})})}),(0,W.jsx)(au.Popover,{children:(0,W.jsx)(Jl,{actions:M,item:n,registry:S,setActiveModalAction:N})})]}),!!R&&(0,W.jsx)(_o,{action:R,items:[n],closeModal:()=>N(null)})]})]});return(0,W.jsx)($e.Composite.Row,{ref:_,render:(0,W.jsx)("div",{"aria-posinset":f,"aria-setsize":x?C.totalItems:void 0}),role:x?"article":"row",className:Y({"is-selected":o,"is-hovered":A}),onMouseEnter:E,onMouseLeave:E,children:(0,W.jsxs)(F,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)($e.Composite.Item,{id:su(r),"aria-pressed":o,"aria-labelledby":y,"aria-describedby":w,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,W.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[h,(0,W.jsxs)(F,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,W.jsxs)(F,{direction:"row",align:"center",children:[(0,W.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:y,children:g}),T]}),v&&s?.render&&(0,W.jsx)("div",{className:"dataviews-view-list__field",children:(0,W.jsx)(s.render,{item:n,field:s})}),(0,W.jsx)("div",{className:"dataviews-view-list__fields",id:w,children:c.map(b=>(0,W.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,W.jsx)($e.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:b.label}),(0,W.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,W.jsx)(b.render,{item:n,field:b})})]},b.id))})]})]})]})})}function d0(e){return!!e}function cu(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:c,empty:d}=e,f=(0,ha.useInstanceId)(cu,"view-list"),m=r?.findLast(g=>s.includes(n(g))),p=o.find(g=>g.id===l.titleField),v=o.find(g=>g.id===l.mediaField),x=o.find(g=>g.id===l.descriptionField),_=(l?.fields??[]).map(g=>o.find(T=>g===T.id)).filter(d0),y=g=>a([n(g)]),w=(0,Ge.useCallback)(g=>`${f}-${n(g)}`,[f,n]),S=(0,Ge.useCallback)((g,T)=>T.startsWith(w(g)),[w]),[A,O]=(0,Ge.useState)(void 0);(0,Ge.useEffect)(()=>{m&&O(su(w(m)))},[m,w]);let R=r.findIndex(g=>S(g,A??"")),N=(0,ha.usePrevious)(R),E=R!==-1,C=(0,Ge.useCallback)((g,T)=>{let b=Math.min(r.length-1,Math.max(0,g));if(!r[b])return;let D=w(r[b]),B=T(D);O(B),document.getElementById(B)?.focus()},[r,w]);(0,Ge.useEffect)(()=>{!E&&(N!==void 0&&N!==-1)&&C(N,su)},[E,C,N]);let k=(0,Ge.useCallback)(g=>{g.key==="ArrowDown"&&(g.preventDefault(),C(R+1,lu)),g.key==="ArrowUp"&&(g.preventDefault(),C(R-1,lu))},[C,R]),M=r?.length;if(!M)return(0,W.jsx)("div",{className:Y({"dataviews-loading":i,"dataviews-no-results":!M&&!i}),children:!M&&(i?(0,W.jsx)("p",{children:(0,W.jsx)($e.Spinner,{})}):d)});let V=l.groupBy?.field?o.find(g=>g.id===l.groupBy?.field):null,h=V?Bt(r,V):null;return M&&V&&h?(0,W.jsx)($e.Composite,{id:`${f}`,render:(0,W.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:A,setActiveId:O,children:(0,W.jsx)(F,{direction:"column",gap:"lg",className:Y("dataviews-view-list",c),children:Array.from(h.entries()).map(([g,T])=>(0,W.jsxs)(F,{direction:"column",gap:"sm",children:[(0,W.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?g:(0,Fn.sprintf)((0,Fn.__)("%1$s: %2$s"),V.label,g)}),T.map(b=>{let D=w(b);return(0,W.jsx)(Qd,{view:l,idPrefix:D,actions:t,item:b,isSelected:b===m,onSelect:y,mediaField:v,titleField:p,descriptionField:x,otherFields:_,onDropdownTriggerKeyDown:k},D)})]},g))})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)($e.Composite,{id:f,render:(0,W.jsx)("div",{}),className:Y("dataviews-view-list",c,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density)}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:A,setActiveId:O,children:r.map((g,T)=>{let b=w(g);return(0,W.jsx)(Qd,{view:l,idPrefix:b,actions:t,item:g,isSelected:g===m,onSelect:y,mediaField:v,titleField:p,descriptionField:x,otherFields:_,onDropdownTriggerKeyDown:k,posinset:l.infiniteScrollEnabled?T+1:void 0},b)})}),M&&i&&(0,W.jsx)("p",{className:"dataviews-loading-more",children:(0,W.jsx)($e.Spinner,{})})]})}var fu=u(U(),1);var ba=u(Z(),1),Jd=u(z(),1);var $o=u(I(),1);function ef({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Jd.createInterpolateElement)((0,ba.sprintf)((0,ba.__)("%s: "),r.label).trim(),{groupName:(0,$o.jsx)(r.render,{item:t[0],field:r})}):(0,$o.jsx)(r.render,{item:t[0],field:r});return(0,$o.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,$o.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var tf=u(U(),1),wo=u(z(),1),rf=u($t(),1),of=u(At(),1);var Be=u(I(),1);function f0(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:c,renderItemLink:d,isItemClickable:f}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:x}=t,_=(0,wo.useRef)(null),y=(0,rf.useRegistry)(),{paginationInfo:w}=(0,wo.useContext)($),{primaryActions:S,eligibleActions:A}=(0,wo.useMemo)(()=>{let M=r.filter(h=>!h.isEligible||h.isEligible(o));return{primaryActions:M.filter(h=>h.isPrimary),eligibleActions:M}},[r,o]),O=(0,of.useViewportMatch)("medium","<"),R=t.layout?.density??"balanced",N=p&&R!=="compact"&&i?.render?(0,Be.jsx)(i.render,{item:o,field:i,config:{sizes:R==="comfortable"?"32px":"24px"}}):null,E=(0,Be.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:N||(0,Be.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),C=m&&n?.render?(0,Be.jsx)(n.render,{item:o,field:n}):null,k=(0,wo.useMemo)(()=>R==="comfortable"?"md":"sm",[R]);return(0,Be.jsx)("div",{ref:_,role:x?"article":void 0,"aria-posinset":l,"aria-setsize":x?w.totalItems:void 0,className:Y("dataviews-view-activity__item",R==="compact"&&"is-compact",R==="balanced"&&"is-balanced",R==="comfortable"&&"is-comfortable"),children:(0,Be.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,Be.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:E}),(0,Be.jsxs)(F,{direction:"column",gap:k,align:"flex-start",className:"dataviews-view-activity__item-content",children:[C&&(0,Be.jsx)(Xr,{item:o,isItemClickable:f,onClickItem:c,renderItemLink:d,className:"dataviews-view-activity__item-title",children:C}),v&&a&&(0,Be.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,Be.jsx)(a.render,{item:o,field:a})}),(0,Be.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(M=>(0,Be.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,Be.jsx)(tf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:M.label}),(0,Be.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,Be.jsx)(M.render,{item:o,field:M})})]},M.id))}),!!S?.length&&(0,Be.jsx)(eu,{item:o,actions:S,registry:y,buttonVariant:"secondary"})]}),(S.length0)&&(0,Be.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,Be.jsx)(Wo,{item:o,actions:A,isCompact:!0})})]})})}var nf=f0;var af=u(me(),1);function m0(e){return!!e}function du(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(c=>c.id===n.titleField),a=r.find(c=>c.id===n.mediaField),s=r.find(c=>c.id===n.descriptionField),l=(n?.fields??[]).map(c=>r.find(d=>c===d.id)).filter(m0);return t.map((c,d)=>(0,af.createElement)(nf,{...e,key:o(c),item:c,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?d+1:void 0}))}var yt=u(I(),1);function sf(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=r?.length;if(!s)return(0,yt.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!s&&!n}),children:!s&&(n?(0,yt.jsx)("p",{children:(0,yt.jsx)(fu.Spinner,{})}):t)});let l=Y("dataviews-view-activity",a),c=i.groupBy?.field?o.find(m=>m.id===i.groupBy?.field):null,d=c?Bt(r,c):null,f=d?Array.from(d.entries()):[];return s&&c&&d?(0,yt.jsx)(F,{direction:"column",gap:"sm",className:l,children:f.map(([m,p])=>(0,yt.jsx)(ef,{groupName:m,groupData:p,groupField:c,showLabel:i.groupBy?.showLabel!==!1,children:(0,yt.jsx)(du,{...e,data:p})},m))}):(0,yt.jsxs)(yt.Fragment,{children:[(0,yt.jsx)("div",{className:l,role:i.infiniteScrollEnabled?"feed":void 0,children:(0,yt.jsx)(du,{...e})}),s&&n&&(0,yt.jsx)("p",{className:"dataviews-loading-more",children:(0,yt.jsx)(fu.Spinner,{})})]})}var Rt=u(U(),1),jn=u(Z(),1),pf=u(At(),1),vf=u(z(),1);var uf=u(U(),1),p0=u($t(),1),_a=u(z(),1);var v0=u(Z(),1);var Ln=u(U(),1),Ko=u(z(),1),Ft=u(Z(),1);var wr=u(I(),1);function mu(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Ko.useContext)($);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Ft.sprintf)((0,Ft.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,wr.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,wr.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,Ko.createInterpolateElement)((0,Ft.sprintf)((0,Ft._x)("
      Page
      %1$s
      of %2$d
      ","paging"),"",o),{div:(0,wr.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,wr.jsx)(Ln.SelectControl,{"aria-label":(0,Ft.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,wr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,wr.jsx)(Ln.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Ft.__)("Previous page"),icon:(0,Ft.isRTL)()?Yi:$i,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,wr.jsx)(Ln.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Ft.__)("Next page"),icon:(0,Ft.isRTL)()?$i:Yi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var lf=(0,Ko.memo)(mu);var cf=u(I(),1);function xa(e){return(0,_a.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var df=u(z(),1);var ff=u(I(),1),pu=(0,df.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,ff.jsx)("div",{ref:o,className:Y("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var ee=u(I(),1),{Badge:g0}=J(Rt.privateApis);function mf({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:c,badgeFields:d,config:f,posinset:m,setsize:p}){let{showTitle:v=!0,showMedia:x=!0,showDescription:_=!0}=e,y=n(i),w=r.includes(y),S=a?.render?(0,ee.jsx)(a.render,{item:i,field:a,config:f}):null,A=v&&s?.render?(0,ee.jsx)(s.render,{item:i,field:s}):null;return(0,ee.jsxs)(Rt.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,jn.__)("(no title)"):void 0,render:({children:O,...R})=>(0,ee.jsx)(F,{direction:"column",children:O,...R}),role:"option","aria-posinset":m,"aria-setsize":p,className:Y("dataviews-view-picker-grid__card",{"is-selected":w}),"aria-selected":w,onClick:()=>{if(w)o(r.filter(O=>y!==O));else{let O=t?[...r,y]:[y];o(O)}},children:[x&&S&&(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__media",children:S}),x&&S&&(0,ee.jsx)($r,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,ee.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,ee.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:A})}),(0,ee.jsxs)(F,{direction:"column",gap:"xs",children:[_&&l?.render&&(0,ee.jsx)(l.render,{item:i,field:l}),!!d?.length&&(0,ee.jsx)(F,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:d.map(O=>(0,ee.jsx)(g0,{className:"dataviews-view-picker-grid__field-value",children:(0,ee.jsx)(O.render,{item:i,field:O})},O.id))}),!!c?.length&&(0,ee.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:c.map(O=>(0,ee.jsx)(Rt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(Rt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:O.header}),(0,ee.jsx)(Rt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,ee.jsx)(O.render,{item:i,field:O})})]})},O.id))})]})]},y)}function gf({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,pf.useInstanceId)(gf,"dataviews-view-picker-grid-group__header");return(0,ee.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,ee.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,jn.sprintf)((0,jn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function h0({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:c}){let{resizeObserverRef:d,paginationInfo:f,itemListLabel:m}=(0,vf.useContext)($),p=r.find(h=>h.id===s?.titleField),v=r.find(h=>h.id===s?.mediaField),x=r.find(h=>h.id===s?.descriptionField),_=s.fields??[],{regularFields:y,badgeFields:w}=_.reduce((h,g)=>{let T=r.find(D=>D.id===g);if(!T)return h;let b=s.layout?.badgeFields?.includes(g)?"badgeFields":"regularFields";return h[b].push(T),h},{regularFields:[],badgeFields:[]}),S=!!t?.length,A=s.layout?.previewSize,O=xa(e),R="900px",N=s.groupBy?.field?r.find(h=>h.id===s.groupBy?.field):null,E=N?Bt(t,N):null,C=s.infiniteScrollEnabled&&!E,k=s?.page??1,M=s?.perPage??0,V=C?f?.totalItems:void 0;return(0,ee.jsxs)(ee.Fragment,{children:[S&&N&&E&&(0,ee.jsx)(Rt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,className:Y("dataviews-view-picker-grid",l),"aria-label":m,render:({children:h,...g})=>(0,ee.jsx)(F,{direction:"column",gap:"lg",children:h,...g}),children:Array.from(E.entries()).map(([h,g])=>(0,ee.jsx)(gf,{groupName:h,groupField:N,showLabel:s.groupBy?.showLabel!==!1,children:(0,ee.jsx)(pu,{previewSize:A,style:{gridTemplateColumns:A&&`repeat(auto-fill, minmax(${A}px, 1fr))`},"aria-busy":n,ref:d,children:g.map(T=>{let b=(k-1)*M+t.indexOf(T)+1;return(0,ee.jsx)(mf,{view:s,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:T,mediaField:v,titleField:p,descriptionField:x,regularFields:y,badgeFields:w,config:{sizes:R},posinset:b,setsize:V},o(T))})})},h))}),S&&!E&&(0,ee.jsx)(Rt.Composite,{render:(0,ee.jsx)(pu,{className:Y("dataviews-view-picker-grid",l),previewSize:A,"aria-busy":n,ref:d}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,"aria-label":m,children:t.map((h,g)=>{let T=C?g+1:void 0;return C||(T=(k-1)*M+g+1),(0,ee.jsx)(mf,{view:s,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:h,mediaField:v,titleField:p,descriptionField:x,regularFields:y,badgeFields:w,config:{sizes:R},posinset:T,setsize:V},o(h))})}),!S&&(0,ee.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,ee.jsx)("p",{children:(0,ee.jsx)(Rt.Spinner,{})}):c}),S&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(Rt.Spinner,{})})]})}var hf=h0;var wa=u(Z(),1),yo=u(U(),1),Ht=u(z(),1);var re=u(I(),1);function b0({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,re.jsx)("div",{className:i,children:(0,re.jsx)(n.render,{item:e,field:n})})}function bf({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:c,multiselect:d,posinset:f}){let{paginationInfo:m}=(0,Ht.useContext)($),p=s.includes(r),[v,x]=(0,Ht.useState)(!1),{showTitle:_=!0,showMedia:y=!0,showDescription:w=!0,infiniteScrollEnabled:S}=o,A=()=>{x(!0)},O=()=>{x(!1)},R=o.fields??[],N=n&&_||i&&y||a&&w;return(0,re.jsxs)(yo.Composite.Item,{render:({children:E,...C})=>(0,re.jsx)("tr",{className:Y("dataviews-view-table__row",{"is-selected":p,"is-hovered":v}),onMouseEnter:A,onMouseLeave:O,children:E,...C}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":f,role:S?"article":"option",onClick:()=>{if(p)c(s.filter(E=>r!==E));else{let E=d?[...s,r]:[r];c(E)}},children:[(0,re.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,re.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,re.jsx)($r,{item:e,selection:s,onChangeSelection:c,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),N&&(0,re.jsx)("td",{role:"presentation",children:(0,re.jsx)(fa,{item:e,titleField:_?n:void 0,mediaField:y?i:void 0,descriptionField:w?a:void 0,isItemClickable:()=>!1})}),R.map(E=>{let{width:C,maxWidth:k,minWidth:M,align:V}=o.layout?.styles?.[E]??{};return(0,re.jsx)("td",{style:{width:C,maxWidth:k,minWidth:M},role:"presentation",children:(0,re.jsx)(b0,{fields:t,item:e,column:E,align:V})},E)})]},r)}function _0({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:c,className:d,empty:f}){let m=(0,Ht.useRef)(new Map),p=(0,Ht.useRef)(),[v,x]=(0,Ht.useState)(),_=xa(e)??!1;(0,Ht.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let y=(0,Ht.useId)();if(v){p.current=v,x(void 0);return}let w=b=>{let D=m.current.get(b.id),B=D?m.current.get(D.fallback):void 0;x(B?.node)},S=!!t?.length,A=r.find(b=>b.id===c.titleField),O=r.find(b=>b.id===c.mediaField),R=r.find(b=>b.id===c.descriptionField),N=c.groupBy?.field?r.find(b=>b.id===c.groupBy?.field):null,E=N?Bt(t,N):null,{showTitle:C=!0,showMedia:k=!0,showDescription:M=!0}=c,V=A&&C||O&&k||R&&M,h=c.fields??[],g=(b,D)=>B=>{B?m.current.set(b,{node:B,fallback:h[D>0?D-1:1]}):m.current.delete(b)},T=c.infiniteScrollEnabled&&!E;return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsxs)("table",{className:Y("dataviews-view-table","dataviews-view-picker-table",d,{[`has-${c.layout?.density}-density`]:c.layout?.density&&["compact","comfortable"].includes(c.layout.density)}),"aria-busy":n,"aria-describedby":y,role:T?"feed":"listbox",children:[(0,re.jsx)("thead",{role:"presentation",children:(0,re.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,re.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:_&&(0,re.jsx)(Dn,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),V&&(0,re.jsx)("th",{children:A&&(0,re.jsx)(Yo,{ref:g(A.id,0),fieldId:A.id,view:c,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:!1})}),h.map((b,D)=>{let{width:B,maxWidth:P,minWidth:G,align:K}=c.layout?.styles?.[b]??{};return(0,re.jsx)("th",{style:{width:B,maxWidth:P,minWidth:G,textAlign:K},"aria-sort":c.sort?.direction&&c.sort?.field===b?na[c.sort.direction]:void 0,scope:"col",children:(0,re.jsx)(Yo,{ref:g(b,D),fieldId:b,view:c,fields:r,onChangeView:i,onHide:w,setOpenedFilter:l,canMove:c.layout?.enableMoving??!0})},b)})]})}),S&&N&&E?Array.from(E.entries()).map(([b,D])=>(0,re.jsxs)(yo.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,re.jsx)("tbody",{role:"group"}),children:[(0,re.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,re.jsx)("td",{colSpan:h.length+(V?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:c.groupBy?.showLabel===!1?b:(0,wa.sprintf)((0,wa.__)("%1$s: %2$s"),N.label,b)})}),D.map((B,P)=>(0,re.jsx)(bf,{item:B,fields:r,id:o(B)||P.toString(),view:c,titleField:A,mediaField:O,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:_},o(B)))]},`group-${b}`)):(0,re.jsx)(yo.Composite,{render:(0,re.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:S&&t.map((b,D)=>(0,re.jsx)(bf,{item:b,fields:r,id:o(b)||D.toString(),view:c,titleField:A,mediaField:O,descriptionField:R,selection:s,getItemId:o,onChangeSelection:a,multiselect:_,posinset:D+1},o(b)))})]}),(0,re.jsxs)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!S&&!n}),id:y,children:[!S&&(n?(0,re.jsx)("p",{children:(0,re.jsx)(yo.Spinner,{})}):f),S&&n&&(0,re.jsx)("p",{className:"dataviews-loading-more",children:(0,re.jsx)(yo.Spinner,{})})]})]})}var _f=_0;var xf=u(U(),1),wf=u(Z(),1),yf=u(z(),1);var Sf=u(I(),1),x0=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function vu(){let e=(0,yf.useContext)($),t=e.view,r=x0.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,Sf.jsx)(xf.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,wf.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var Zo=u(U(),1),Xo=u(Z(),1),Cf=u(z(),1);var Qo=u(I(),1);function Bn(){let e=(0,Cf.useContext)($),t=e.view;return(0,Qo.jsxs)(Zo.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Xo.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,Qo.jsx)(Zo.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,Xo._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Qo.jsx)(Zo.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,Xo._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Qo.jsx)(Zo.__experimentalToggleGroupControlOption,{value:"compact",label:(0,Xo._x)("Compact","Density option for DataView layout")},"compact")]})}var Jr=[{type:Ho,label:(0,yr.__)("Table"),component:Ud,icon:Ai,viewConfigOptions:Bn},{type:aa,label:(0,yr.__)("Grid"),component:Xd,icon:Vi,viewConfigOptions:vu},{type:xd,label:(0,yr.__)("List"),component:cu,icon:(0,yr.isRTL)()?Cl:Pl,viewConfigOptions:Bn},{type:wd,label:(0,yr.__)("Activity"),component:sf,icon:Ll,viewConfigOptions:Bn},{type:yd,label:(0,yr.__)("Grid"),component:hf,icon:Vi,viewConfigOptions:vu,isPicker:!0},{type:Sd,label:(0,yr.__)("Table"),component:_f,icon:Ai,viewConfigOptions:Bn,isPicker:!0}];var pn=u(z(),1);var Kt=u(U(),1),Ir=u(Z(),1),os=u(z(),1);var w0=Object.defineProperty,y0=Object.defineProperties,S0=Object.getOwnPropertyDescriptors,ya=Object.getOwnPropertySymbols,Pf=Object.prototype.hasOwnProperty,Of=Object.prototype.propertyIsEnumerable,Ef=(e,t,r)=>t in e?w0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))Pf.call(t,r)&&Ef(e,r,t[r]);if(ya)for(var r of ya(t))Of.call(t,r)&&Ef(e,r,t[r]);return e},Q=(e,t)=>y0(e,S0(t)),ae=(e,t)=>{var r={};for(var o in e)Pf.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ya)for(var o of ya(e))t.indexOf(o)<0&&Of.call(e,o)&&(r[o]=e[o]);return r};var C0=Object.defineProperty,E0=Object.defineProperties,P0=Object.getOwnPropertyDescriptors,Sa=Object.getOwnPropertySymbols,Af=Object.prototype.hasOwnProperty,If=Object.prototype.propertyIsEnumerable,Tf=(e,t,r)=>t in e?C0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,se=(e,t)=>{for(var r in t||(t={}))Af.call(t,r)&&Tf(e,r,t[r]);if(Sa)for(var r of Sa(t))If.call(t,r)&&Tf(e,r,t[r]);return e},He=(e,t)=>E0(e,P0(t)),Ca=(e,t)=>{var r={};for(var o in e)Af.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Sa)for(var o of Sa(e))t.indexOf(o)<0&&If.call(e,o)&&(r[o]=e[o]);return r};function Hn(...e){}function gu(e,t){if(O0(e)){let r=T0(t)?t():t;return e(r)}return e}function O0(e){return typeof e=="function"}function T0(e){return typeof e=="function"}function kt(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function eo(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function zn(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function hu(e,t){let r=se({},e);for(let o of t)kt(r,o)&&delete r[o];return r}function bu(e,t){let r={};for(let o of t)kt(e,o)&&(r[o]=e[o]);return r}function Wn(e){return e}function nt(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function _u(e){return Object.keys(e)}function xu(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function So(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function it(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function oe(...e){for(let t of e)if(t!==void 0)return t}var Vf=u(me(),1);function Rf(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function A0(e){return!e||!(0,Vf.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function kf(e){return A0(e)?j({},e.props).ref||e.ref:null}function Df(e,t){let r=j({},e);for(let o in t){if(!kt(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?j(j({},e[i]),t[i]):t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var to=I0();function I0(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function Sr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function Co(e,t=!1){let{activeElement:r}=Sr(e);if(!r?.nodeName)return null;if(wu(r)&&r.contentDocument)return Co(r.contentDocument.body,t);if(t){let o=r.getAttribute("aria-activedescendant");if(o){let n=Sr(r).getElementById(o);if(n)return n}}return r}function or(e,t){return e===t||e.contains(t)}function wu(e){return e.tagName==="IFRAME"}function Cr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?V0.indexOf(e.type)!==-1:!1}var V0=["button","color","file","image","reset","submit"];function yu(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function St(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function Gn(e){return e.isContentEditable||St(e)}function Su(e){if(St(e))return e.value;if(e.isContentEditable){let t=Sr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function Jo(e){let t=0,r=0;if(St(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=Sr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&or(e,o.anchorNode)&&o.focusNode&&or(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function Cu(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function en(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return en(e.parentElement)||document.scrollingElement||document.body}function qn(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function Eu(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),c=t(s);return l===c||!l||!c?0:R0(l,c)?(n>a&&(o=!0),-1):(ni):e}function R0(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function Pu(){return to&&!!navigator.maxTouchPoints}function Ea(){return to?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Eo(){return to&&Ea()&&/apple/i.test(navigator.vendor)}function Ou(){return to&&/firefox\//i.test(navigator.userAgent)}function Pa(e){return!!(e.currentTarget&&!or(e.currentTarget,e.target))}function pt(e){return e.target===e.currentTarget}function Nf(e){let t=e.currentTarget;if(!t)return!1;let r=Ea();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function Mf(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function Po(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n=He(se({},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",n)),o}function Ff(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function Tu(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function Oa(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!or(r,o)}function ro(e,t,r,o){let i=(s=>{if(o){let c=setTimeout(s,o);return()=>clearTimeout(c)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function nr(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(nr(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var _e=u(me(),1),k0=u(me(),1),Au=j({},k0),Lf=Au.useId,UE=Au.useDeferredValue,jf=Au.useInsertionEffect,ke=to?_e.useLayoutEffect:_e.useEffect;function D0(e){let[t]=(0,_e.useState)(e);return t}function zf(e){let t=(0,_e.useRef)(e);return ke(()=>{t.current=e}),t}function ne(e){let t=(0,_e.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return jf?jf(()=>{t.current=e}):t.current=e,(0,_e.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function Wf(e){let[t,r]=(0,_e.useState)(null);return ke(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function Ne(...e){return(0,_e.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)Rf(r,t)}},e)}function zt(e){if(Lf){let o=Lf();return e||o}let[t,r]=(0,_e.useState)(e);return ke(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function Gf(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,_e.useState)(()=>r(t));return ke(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function qf(e,t,r){let o=D0(r),[n,i]=(0,_e.useState)(o);return(0,_e.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let c=a.getAttribute(t);i(c??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function ir(e,t){let r=(0,_e.useRef)(!1);(0,_e.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,_e.useEffect)(()=>()=>{r.current=!1},[])}function Yf(e,t){let r=(0,_e.useRef)(!1);ke(()=>{if(r.current)return e();r.current=!0},t),ke(()=>()=>{r.current=!1},[])}function Uf(){return(0,_e.useReducer)(()=>[],[])}function ze(e){return ne(typeof e=="function"?e:()=>e)}function ar(e,t,r=[]){let o=(0,_e.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return Q(j({},e),{wrapElement:o})}function $f(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,_e.useMemo)(()=>Object.assign(()=>{},Q(j({},o),{[t]:r})),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}function Kf(){return(0,_e.useEffect)(()=>{nr("mousemove",M0,!0),nr("mousedown",Ta,!0),nr("mouseup",Ta,!0),nr("keydown",Ta,!0),nr("scroll",Ta,!0)},[]),ne(()=>Iu)}var Iu=!1,Bf=0,Hf=0;function N0(e){let t=e.movementX||e.screenX-Bf,r=e.movementY||e.screenY-Hf;return Bf=e.screenX,Hf=e.screenY,t||r||!1}function M0(e){N0(e)&&(Iu=!0)}function Ta(){Iu=!1}var Ct=u(me(),1),Oo=u(I(),1);function xe(e){let t=Ct.forwardRef((r,o)=>e(Q(j({},r),{ref:o})));return t.displayName=e.displayName||e.name,t}function oo(e,t){return Ct.memo(e,t)}function Se(e,t){let r=t,{wrapElement:o,render:n}=r,i=ae(r,["wrapElement","render"]),a=Ne(t.ref,kf(n)),s;if(Ct.isValidElement(n)){let l=Q(j({},n.props),{ref:a});s=Ct.cloneElement(n,Df(i,l))}else n?s=n(i):s=(0,Oo.jsx)(e,j({},i));return o?o(s):s}function Ce(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function Dt(e=[],t=[]){let r=Ct.createContext(void 0),o=Ct.createContext(void 0),n=()=>Ct.useContext(r),i=(c=!1)=>{let d=Ct.useContext(o),f=n();return c?d:d||f},a=()=>{let c=Ct.useContext(o),d=n();if(!(c&&c===d))return d},s=c=>e.reduceRight((d,f)=>(0,Oo.jsx)(f,Q(j({},c),{children:d})),(0,Oo.jsx)(r.Provider,j({},c)));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:c=>(0,Oo.jsx)(s,Q(j({},c),{children:t.reduceRight((d,f)=>(0,Oo.jsx)(f,Q(j({},c),{children:d})),(0,Oo.jsx)(o.Provider,j({},c)))}))}}var Yn=Dt(),Zf=Yn.useContext,eP=Yn.useScopedContext,tP=Yn.useProviderContext,Xf=Yn.ContextProvider,Qf=Yn.ScopedContextProvider;var Vu=u(me(),1),Un=Dt([Xf],[Qf]),Aa=Un.useContext,iP=Un.useScopedContext,Jf=Un.useProviderContext,tn=Un.ContextProvider,Ia=Un.ScopedContextProvider,em=(0,Vu.createContext)(void 0),tm=(0,Vu.createContext)(void 0);var Ru=u(me(),1),uP=(0,Ru.createContext)(null),cP=(0,Ru.createContext)(null),$n=Dt([tn],[Ia]),rm=$n.useContext,dP=$n.useScopedContext,fP=$n.useProviderContext,mP=$n.ContextProvider,pP=$n.ScopedContextProvider;function To(e,t){let r=e.__unstableInternals;return nt(r,"Invalid store"),r[t]}function Et(e,...t){let r=e,o=r,n=Symbol(),i=Hn,a=new Set,s=new Set,l=new Set,c=new Set,d=new Set,f=new WeakMap,m=new WeakMap,p=E=>(l.add(E),()=>l.delete(E)),v=()=>{let E=a.size,C=Symbol();a.add(C);let k=()=>{a.delete(C),!a.size&&i()};if(E)return k;let M=_u(r).map(g=>eo(...t.map(T=>{var b;let D=(b=T?.getState)==null?void 0:b.call(T);if(D&&kt(D,g))return tt(T,[g],B=>{R(g,B[g],!0)})}))),V=[];for(let g of l)V.push(g());let h=t.map(rn);return i=eo(...M,...V,...h),k},x=(E,C,k=c)=>(k.add(C),m.set(C,E),()=>{var M;(M=f.get(C))==null||M(),f.delete(C),m.delete(C),k.delete(C)}),_=(E,C)=>x(E,C),y=(E,C)=>(f.set(C,C(r,r)),x(E,C)),w=(E,C)=>(f.set(C,C(r,o)),x(E,C,d)),S=E=>Et(bu(r,E),N),A=E=>Et(hu(r,E),N),O=()=>r,R=(E,C,k=!1)=>{var M;if(!kt(r,E))return;let V=gu(C,r[E]);if(V===r[E])return;if(!k)for(let b of t)(M=b?.setState)==null||M.call(b,E,V);let h=r;r=He(se({},r),{[E]:V});let g=Symbol();n=g,s.add(E);let T=(b,D,B)=>{var P;let G=m.get(b),K=Qe=>B?B.has(Qe):Qe===E;(!G||G.some(K))&&((P=f.get(b))==null||P(),f.set(b,b(r,D)))};for(let b of c)T(b,h);queueMicrotask(()=>{if(n!==g)return;let b=r;for(let D of d)T(D,o,s);o=b,s.clear()})},N={getState:O,setState:R,__unstableInternals:{setup:p,init:v,subscribe:_,sync:y,batch:w,pick:S,omit:A}};return N}function et(e,...t){if(e)return To(e,"setup")(...t)}function rn(e,...t){if(e)return To(e,"init")(...t)}function on(e,...t){if(e)return To(e,"subscribe")(...t)}function tt(e,...t){if(e)return To(e,"sync")(...t)}function no(e,...t){if(e)return To(e,"batch")(...t)}function Kn(e,...t){if(e)return To(e,"omit")(...t)}function ku(e,...t){if(e)return To(e,"pick")(...t)}function Ao(...e){let t=e.reduce((o,n)=>{var i;let a=(i=n?.getState)==null?void 0:i.call(n);return a?Object.assign(o,a):o},{}),r=Et(t,...e);return Object.assign({},...e,r)}var sr=u(me(),1),om=u(dd(),1),{useSyncExternalStore:nm}=om.default,im=()=>()=>{};function nn(e,t=Wn){let r=sr.useCallback(n=>e?on(e,null,n):im(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&kt(a,n))return a[n]};return nm(r,o,o)}function Ra(e,t){let r=sr.useRef({}),o=sr.useCallback(i=>e?on(e,null,i):im(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let c=t[l];if(typeof c=="function"){let d=c(i);d!==s[l]&&(s[l]=d,a=!0)}if(typeof c=="string"){if(!i||!kt(i,c))continue;let d=i[c];d!==s[l]&&(s[l]=d,a=!0)}}return a&&(r.current=j({},s)),r.current};return nm(o,n,n)}function Me(e,t,r,o){let n=kt(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=zf({value:n,setValue:i});ke(()=>tt(e,[r],(s,l)=>{let{value:c,setValue:d}=a.current;d&&s[r]!==l[r]&&s[r]!==c&&d(s[r])}),[e,r]),ke(()=>{if(n!==void 0)return e.setState(r,n),no(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function an(e,t){let[r,o]=sr.useState(()=>e(t));ke(()=>rn(r),[r]);let n=sr.useCallback(s=>nn(r,s),[r]),i=sr.useMemo(()=>Q(j({},r),{useState:n}),[r,n]),a=ne(()=>{o(s=>e(j(j({},t),s.getState())))});return[i,a]}function F0(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Sr(n).body}function L0(e){return e?.__unstablePrivateStore}function am(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=oe(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:oe(r?.renderedItems,[])},a=L0(e.store),s=Et({items:o,renderedItems:i.renderedItems},a),l=Et(i,e.store),c=m=>{let p=Eu(m,v=>v.element);s.setState("renderedItems",p),l.setState("renderedItems",p)};et(l,()=>rn(s)),et(s,()=>no(s,["items"],m=>{l.setState("items",m.items)})),et(s,()=>no(s,["renderedItems"],m=>{let p=!0,v=requestAnimationFrame(()=>{let{renderedItems:w}=l.getState();m.renderedItems!==w&&c(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let x=()=>{if(p){p=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>c(m.renderedItems))},_=F0(m.renderedItems),y=new IntersectionObserver(x,{root:_});for(let w of m.renderedItems)w.element&&y.observe(w.element);return()=>{cancelAnimationFrame(v),y.disconnect()}}));let d=(m,p,v=!1)=>{let x;return p(y=>{let w=y.findIndex(({id:A})=>A===m.id),S=y.slice();if(w!==-1){x=y[w];let A=se(se({},x),m);S[w]=A,n.set(m.id,A)}else S.push(m),n.set(m.id,m);return S}),()=>{p(y=>{if(!x)return v&&n.delete(m.id),y.filter(({id:A})=>A!==m.id);let w=y.findIndex(({id:A})=>A===m.id);if(w===-1)return y;let S=y.slice();return S[w]=x,n.set(m.id,x),S})}},f=m=>d(m,p=>s.setState("items",p),!0);return He(se({},l),{registerItem:f,renderItem:m=>eo(f(m),d(m,p=>s.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:v}=s.getState();p=v.find(x=>x.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:s})}function sm(e,t,r){return ir(t,[r.store]),Me(e,r,"items","setItems"),e}function Du(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function Zn(e){let t=[];for(let r of e)t.push(...r);return t}function sn(e){return e.slice().reverse()}var j0={id:null};function Er(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function B0(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function lm(e,t){return e.filter(r=>r.rowId===t)}function H0(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[j0]:[],...e.slice(0,o)]}function um(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function cm(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function z0(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function W0(e,t,r){let o=cm(e);for(let n of e)for(let i=0;itt(a,["renderedItems","activeId"],l=>{a.setState("activeId",c=>{var d;return c!==void 0?c:(d=Er(l.renderedItems))==null?void 0:d.id})}));let s=(l="next",c={})=>{var d,f;let m=a.getState(),{skip:p=0,activeId:v=m.activeId,focusShift:x=m.focusShift,focusLoop:_=m.focusLoop,focusWrap:y=m.focusWrap,includesBaseElement:w=m.includesBaseElement,renderedItems:S=m.renderedItems,rtl:A=m.rtl}=c,O=l==="up"||l==="down",R=l==="next"||l==="down",N=R?A&&!O:!A||O,E=x&&!p,C=O?Zn(W0(um(S),v,E)):S;if(C=N?sn(C):C,C=O?G0(C):C,v==null)return(d=Er(C))==null?void 0:d.id;let k=C.find(P=>P.id===v);if(!k)return(f=Er(C))==null?void 0:f.id;let M=C.some(P=>P.rowId),V=C.indexOf(k),h=C.slice(V+1),g=lm(h,k.rowId);if(p){let P=B0(g,v),G=P.slice(p)[0]||P[P.length-1];return G?.id}let T=_&&(O?_!=="horizontal":_!=="vertical"),b=M&&y&&(O?y!=="horizontal":y!=="vertical"),D=R?(!M||O)&&T&&w:O?w:!1;if(T){let P=b&&!D?C:lm(C,k.rowId),G=H0(P,v,D),K=Er(G,v);return K?.id}if(b){let P=Er(D?g:h,v);return D?P?.id||null:P?.id}let B=Er(g,v);return!B&&D?null:B?.id};return He(se(se({},o),a),{setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",c=>c+1))},first:()=>{var l;return(l=Er(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=Er(sn(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))})}function fm(e){let t=zt(e.id);return j({id:t},e)}function mm(e,t,r){return e=sm(e,t,r),Me(e,r,"activeId","setActiveId"),Me(e,r,"includesBaseElement"),Me(e,r,"virtualFocus"),Me(e,r,"orientation"),Me(e,r,"rtl"),Me(e,r,"focusLoop"),Me(e,r,"focusWrap"),Me(e,r,"focusShift"),e}function pm(e={}){let t=Ao(e.store,Kn(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=oe(e.open,r?.open,e.defaultOpen,!1),n=oe(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:oe(r?.contentElement,null),disclosureElement:oe(r?.disclosureElement,null)},a=Et(i,t);return et(a,()=>tt(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),et(a,()=>on(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),et(a,()=>tt(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),He(se({},a),{disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)})}function vm(e,t,r){return ir(t,[r.store,r.disclosure]),Me(e,r,"open","setOpen"),Me(e,r,"mounted","setMounted"),Me(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}function gm(e={}){return pm(e)}function hm(e,t,r){return vm(e,t,r)}function bm(e={}){var t=e,{popover:r}=t,o=Ca(t,["popover"]);let n=Ao(o.store,Kn(r,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let i=n?.getState(),a=gm(He(se({},o),{store:n})),s=oe(o.placement,i?.placement,"bottom"),l=He(se({},a.getState()),{placement:s,currentPlacement:s,anchorElement:oe(i?.anchorElement,null),popoverElement:oe(i?.popoverElement,null),arrowElement:oe(i?.arrowElement,null),rendered:Symbol("rendered")}),c=Et(l,a,n);return He(se(se({},a),c),{setAnchorElement:d=>c.setState("anchorElement",d),setPopoverElement:d=>c.setState("popoverElement",d),setArrowElement:d=>c.setState("arrowElement",d),render:()=>c.setState("rendered",Symbol("rendered"))})}function _m(e,t,r){return ir(t,[r.popover]),Me(e,r,"placement"),hm(e,t,r)}var q0=Eo()&&Pu();function xm(e={}){var t=e,{tag:r}=t,o=Ca(t,["tag"]);let n=Ao(o.store,ku(r,["value","rtl"]));let i=r?.getState(),a=n?.getState(),s=oe(o.activeId,a?.activeId,o.defaultActiveId,null),l=dm(He(se({},o),{activeId:s,includesBaseElement:oe(o.includesBaseElement,a?.includesBaseElement,!0),orientation:oe(o.orientation,a?.orientation,"vertical"),focusLoop:oe(o.focusLoop,a?.focusLoop,!0),focusWrap:oe(o.focusWrap,a?.focusWrap,!0),virtualFocus:oe(o.virtualFocus,a?.virtualFocus,!0)})),c=bm(He(se({},o),{placement:oe(o.placement,a?.placement,"bottom-start")})),d=oe(o.value,a?.value,o.defaultValue,""),f=oe(o.selectedValue,a?.selectedValue,i?.values,o.defaultSelectedValue,""),m=Array.isArray(f),p=He(se(se({},l.getState()),c.getState()),{value:d,selectedValue:f,resetValueOnSelect:oe(o.resetValueOnSelect,a?.resetValueOnSelect,m),resetValueOnHide:oe(o.resetValueOnHide,a?.resetValueOnHide,m&&!r),activeValue:a?.activeValue}),v=Et(p,l,c,n);return q0&&et(v,()=>tt(v,["virtualFocus"],()=>{v.setState("virtualFocus",!1)})),et(v,()=>{if(r)return eo(tt(v,["selectedValue"],x=>{Array.isArray(x.selectedValue)&&r.setValues(x.selectedValue)}),tt(r,["values"],x=>{v.setState("selectedValue",x.values)}))}),et(v,()=>tt(v,["resetValueOnHide","mounted"],x=>{x.resetValueOnHide&&(x.mounted||v.setState("value",d))})),et(v,()=>tt(v,["open"],x=>{x.open||(v.setState("activeId",s),v.setState("moves",0))})),et(v,()=>tt(v,["moves","activeId"],(x,_)=>{x.moves===_.moves&&v.setState("activeValue",void 0)})),et(v,()=>no(v,["moves","renderedItems"],(x,_)=>{if(x.moves===_.moves)return;let{activeId:y}=v.getState(),w=l.item(y);v.setState("activeValue",w?.value)})),He(se(se(se({},c),l),v),{tag:r,setValue:x=>v.setState("value",x),resetValue:()=>v.setState("value",p.value),setSelectedValue:x=>v.setState("selectedValue",x)})}function U0(e){let t=rm();return e=Q(j({},e),{tag:e.tag!==void 0?e.tag:t}),fm(e)}function $0(e,t,r){return ir(t,[r.tag]),Me(e,r,"value","setValue"),Me(e,r,"selectedValue","setSelectedValue"),Me(e,r,"resetValueOnHide"),Me(e,r,"resetValueOnSelect"),Object.assign(mm(_m(e,t,r),t,r),{tag:r.tag})}function Nu(e={}){e=U0(e);let[t,r]=an(xm,e);return $0(t,r,e)}var Xn=Dt(),PO=Xn.useContext,OO=Xn.useScopedContext,Mu=Xn.useProviderContext,wm=Xn.ContextProvider,ym=Xn.ScopedContextProvider;var Fu=u(me(),1),Qn=Dt([wm],[ym]),VO=Qn.useContext,RO=Qn.useScopedContext,kO=Qn.useProviderContext,Sm=Qn.ContextProvider,ka=Qn.ScopedContextProvider,DO=(0,Fu.createContext)(void 0),NO=(0,Fu.createContext)(void 0);var Jn=Dt([Sm],[ka]),jO=Jn.useContext,BO=Jn.useScopedContext,Cm=Jn.useProviderContext,Em=Jn.ContextProvider,Pm=Jn.ScopedContextProvider;var Da=u(me(),1),Na=(0,Da.createContext)(void 0),ei=Dt([Em,tn],[Pm,Ia]),Lu=ei.useContext,ln=ei.useScopedContext,Ma=ei.useProviderContext,Om=ei.ContextProvider,Tm=ei.ScopedContextProvider,Fa=(0,Da.createContext)(void 0),Am=(0,Da.createContext)(!1);var K0="div",ju=Ce(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=Cm();return o=o||i,n=Q(j({},n),{ref:Ne(o?.setAnchorElement,n.ref)}),n}),ZO=xe(function(t){let r=ju(t);return Se(K0,r)});function Im(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function lr(e,t){return t&&e.item(t)||null}function Vm(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Rm(e,t=!1){if(St(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=Sr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var Bu=Symbol("FOCUS_SILENTLY");function km(e){e[Bu]=!0,e.focus({preventScroll:!0})}function Dm(e){let t=e[Bu];return delete e[Bu],t}function Io(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var Nm=u(me(),1),Mm=(0,Nm.createContext)(!0);var Fm="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function ti(e){return!(!e.matches(Fm)||!yu(e)||e.closest("[inert]"))}function Lm(e){for(;e&&!ti(e);)e=e.closest(Fm);return e||null}function Wt(e){let t=Co(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function Hu(e){let t=Co(e);if(!t)return!1;if(or(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function jm(e){!Hu(e)&&ti(e)&&e.focus()}function Bm(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(se({block:"nearest",inline:"nearest"},t))):e.focus()}var Lt=u(me(),1),Z0="div",Hm=Eo(),X0=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Q0=Symbol("safariFocusAncestor");function zm(e,t){e&&(e[Q0]=t)}function J0(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?X0.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function e_(e){return"labels"in e?e.labels:null}function Wm(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function t_(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function r_(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function o_(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function zu(e,t){return ne(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var Wu=!0;function n_(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(Wu=!1))}function i_(e){e.metaKey||e.ctrlKey||e.altKey||(Wu=!0)}var ri=Ce(function(t){var r=t,{focusable:o=!0,accessibleWhenDisabled:n,autoFocus:i,onFocusVisible:a}=r,s=ae(r,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);let l=(0,Lt.useRef)(null);(0,Lt.useEffect)(()=>{o&&(nr("mousedown",n_,!0),nr("keydown",i_,!0))},[o]),Hm&&(0,Lt.useEffect)(()=>{if(!o)return;let b=l.current;if(!b||!Wm(b))return;let D=e_(b);if(!D)return;let B=()=>queueMicrotask(()=>b.focus());for(let P of D)P.addEventListener("mouseup",B);return()=>{for(let P of D)P.removeEventListener("mouseup",B)}},[o]);let c=o&&So(s),d=!!c&&!n,[f,m]=(0,Lt.useState)(!1);(0,Lt.useEffect)(()=>{o&&d&&f&&m(!1)},[o,d,f]),(0,Lt.useEffect)(()=>{if(!o||!f)return;let b=l.current;if(!b||typeof IntersectionObserver>"u")return;let D=new IntersectionObserver(()=>{ti(b)||m(!1)});return D.observe(b),()=>D.disconnect()},[o,f]);let p=zu(s.onKeyPressCapture,c),v=zu(s.onMouseDownCapture,c),x=zu(s.onClickCapture,c),_=s.onMouseDown,y=ne(b=>{if(_?.(b),b.defaultPrevented||!o)return;let D=b.currentTarget;if(!Hm||Pa(b)||!Cr(D)&&!Wm(D))return;let B=!1,P=()=>{B=!0},G={capture:!0,once:!0};D.addEventListener("focusin",P,G);let K=Lm(D.parentElement);zm(K,!0),ro(D,"mouseup",()=>{D.removeEventListener("focusin",P,!0),zm(K,!1),!B&&jm(D)})}),w=(b,D)=>{if(D&&(b.currentTarget=D),!o)return;let B=b.currentTarget;B&&Wt(B)&&(a?.(b),!b.defaultPrevented&&(B.dataset.focusVisible="true",m(!0)))},S=s.onKeyDownCapture,A=ne(b=>{if(S?.(b),b.defaultPrevented||!o||f||b.metaKey||b.altKey||b.ctrlKey||!pt(b))return;let D=b.currentTarget;ro(D,"focusout",()=>w(b,D))}),O=s.onFocusCapture,R=ne(b=>{if(O?.(b),b.defaultPrevented||!o)return;if(!pt(b)){m(!1);return}let D=b.currentTarget,B=()=>w(b,D);Wu||J0(b.target)?ro(b.target,"focusout",B):m(!1)}),N=s.onBlur,E=ne(b=>{N?.(b),o&&Oa(b)&&m(!1)}),C=(0,Lt.useContext)(Mm),k=ne(b=>{o&&i&&b&&C&&queueMicrotask(()=>{Wt(b)||ti(b)&&b.focus()})}),M=Gf(l),V=o&&t_(M),h=o&&r_(M),g=s.style,T=(0,Lt.useMemo)(()=>d?j({pointerEvents:"none"},g):g,[d,g]);return s=Q(j({"data-focus-visible":o&&f||void 0,"data-autofocus":i||void 0,"aria-disabled":c||void 0},s),{ref:Ne(l,k,s.ref),style:T,tabIndex:o_(o,d,V,h,s.tabIndex),disabled:h&&d?!0:void 0,contentEditable:c?void 0:s.contentEditable,onKeyPressCapture:p,onClickCapture:x,onMouseDownCapture:v,onMouseDown:y,onKeyDownCapture:A,onFocusCapture:R,onBlur:E}),it(s)}),gT=xe(function(t){let r=ri(t);return Se(Z0,r)});var ur=u(me(),1),qm=u(I(),1),a_="div";function s_(e){return e.some(t=>!!t.rowId)}function l_(e){let t=e.target;return t&&!St(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function u_(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function Gm(e,t,r){return ne(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!pt(o)||u_(o)||l_(o))return;let i=e.getState(),a=(n=lr(e,i.activeId))==null?void 0:n.element;if(!a)return;let s=o,{view:l}=s,c=ae(s,["view"]),d=r?.current;a!==d&&a.focus(),Ff(a,o.type,c)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function c_(e){return Im(Zn(sn(Vm(e))))}function d_(e){let[t,r]=(0,ur.useState)(!1),o=(0,ur.useCallback)(()=>r(!0),[]),n=e.useState(i=>lr(e,i.activeId));return(0,ur.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var Gu=Ce(function(t){var r=t,{store:o,composite:n=!0,focusOnMove:i=n,moveOnKeyPress:a=!0}=r,s=ae(r,["store","composite","focusOnMove","moveOnKeyPress"]);let l=Jf();o=o||l,nt(o,!1);let c=(0,ur.useRef)(null),d=(0,ur.useRef)(null),f=d_(o),m=o.useState("moves"),[,p]=Wf(n?o.setBaseElement:null);(0,ur.useEffect)(()=>{var h;if(!o||!m||!n||!i)return;let{activeId:g}=o.getState(),T=(h=lr(o,g))==null?void 0:h.element;T&&Bm(T)},[o,m,n,i]),ke(()=>{if(!o||!m||!n)return;let{baseElement:h,activeId:g}=o.getState();if(!(g===null)||!h)return;let b=d.current;d.current=null,b&&Po(b,{relatedTarget:h}),Wt(h)||h.focus()},[o,m,n]);let v=o.useState("activeId"),x=o.useState("virtualFocus");ke(()=>{var h;if(!o||!n||!x)return;let g=d.current;if(d.current=null,!g)return;let b=((h=lr(o,v))==null?void 0:h.element)||Co(g);b!==g&&Po(g,{relatedTarget:b})},[o,v,x,n]);let _=Gm(o,s.onKeyDownCapture,d),y=Gm(o,s.onKeyUpCapture,d),w=s.onFocusCapture,S=ne(h=>{if(w?.(h),h.defaultPrevented||!o)return;let{virtualFocus:g}=o.getState();if(!g)return;let T=h.relatedTarget,b=Dm(h.currentTarget);pt(h)&&b&&(h.stopPropagation(),d.current=T)}),A=s.onFocus,O=ne(h=>{if(A?.(h),h.defaultPrevented||!n||!o)return;let{relatedTarget:g}=h,{virtualFocus:T}=o.getState();T?pt(h)&&!Io(o,g)&&queueMicrotask(f):pt(h)&&o.setActiveId(null)}),R=s.onBlurCapture,N=ne(h=>{var g;if(R?.(h),h.defaultPrevented||!o)return;let{virtualFocus:T,activeId:b}=o.getState();if(!T)return;let D=(g=lr(o,b))==null?void 0:g.element,B=h.relatedTarget,P=Io(o,B),G=d.current;d.current=null,pt(h)&&P?(B===D?G&&G!==B&&Po(G,h):D?Po(D,h):G&&Po(G,h),h.stopPropagation()):!Io(o,h.target)&&D&&Po(D,h)}),E=s.onKeyDown,C=ze(a),k=ne(h=>{var g;if(E?.(h),h.defaultPrevented||!o||!pt(h))return;let{orientation:T,renderedItems:b,activeId:D}=o.getState(),B=lr(o,D);if((g=B?.element)!=null&&g.isConnected)return;let P=T!=="horizontal",G=T!=="vertical",K=s_(b);if((h.key==="ArrowLeft"||h.key==="ArrowRight"||h.key==="Home"||h.key==="End")&&St(h.currentTarget))return;let Oe={ArrowUp:(K||P)&&(()=>{if(K){let q=c_(b);return q?.id}return o?.last()}),ArrowRight:(K||G)&&o.first,ArrowDown:(K||P)&&o.first,ArrowLeft:(K||G)&&o.last,Home:o.first,End:o.last,PageUp:o.first,PageDown:o.last}[h.key];if(Oe){let q=Oe();if(q!==void 0){if(!C(h))return;h.preventDefault(),o.move(q)}}});s=ar(s,h=>(0,qm.jsx)(tn,{value:o,children:h}),[o]);let M=o.useState(h=>{var g;if(o&&n&&h.virtualFocus)return(g=lr(o,h.activeId))==null?void 0:g.id});s=Q(j({"aria-activedescendant":M},s),{ref:Ne(c,p,s.ref),onKeyDownCapture:_,onKeyUpCapture:y,onFocusCapture:S,onFocus:O,onBlurCapture:N,onKeyDown:k});let V=o.useState(h=>n&&(h.virtualFocus||h.activeId===null));return s=ri(j({focusable:V},s)),s}),RT=xe(function(t){let r=Gu(t);return Se(a_,r)});var at=u(me(),1),f_="input";function Ym(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Um(e,t){return!t||e==null?!1:(e=zn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function m_(e){return e.type==="input"}function p_(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function v_(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var g_=Ce(function(t){var r=t,{store:o,focusable:n=!0,autoSelect:i=!1,getAutoSelectId:a,setValueOnChange:s,showMinLength:l=0,showOnChange:c,showOnMouseDown:d,showOnClick:f=d,showOnKeyDown:m,showOnKeyPress:p=m,blurActiveItemOnClick:v,setValueOnClick:x=!0,moveOnKeyPress:_=!0,autoComplete:y="list"}=r,w=ae(r,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);let S=Ma();o=o||S,nt(o,!1);let A=(0,at.useRef)(null),[O,R]=Uf(),N=(0,at.useRef)(!1),E=(0,at.useRef)(!1),C=o.useState(L=>L.virtualFocus&&i),k=y==="inline"||y==="both",[M,V]=(0,at.useState)(k);Yf(()=>{k&&V(!0)},[k]);let h=o.useState("value"),g=(0,at.useRef)();(0,at.useEffect)(()=>tt(o,["selectedValue","activeId"],(L,de)=>{g.current=de.selectedValue}),[]);let T=o.useState(L=>{var de;if(k&&M&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(de=g.current)!=null&&de.includes(L.activeValue))))return L.activeValue}),b=o.useState("renderedItems"),D=o.useState("open"),B=o.useState("contentElement"),P=(0,at.useMemo)(()=>{if(!k||!M)return h;if(Ym(b,T,C)){if(Um(h,T)){let de=T?.slice(h.length)||"";return h+de}return h}return T||h},[k,M,b,T,C,h]);(0,at.useEffect)(()=>{let L=A.current;if(!L)return;let de=()=>V(!0);return L.addEventListener("combobox-item-move",de),()=>{L.removeEventListener("combobox-item-move",de)}},[]),(0,at.useEffect)(()=>{if(!k||!M||!T||!Ym(b,T,C)||!Um(h,T))return;let de=Hn;return queueMicrotask(()=>{let qe=A.current;if(!qe)return;let{start:Ye,end:jt}=Jo(qe),br=h.length,ct=T.length;qn(qe,br,ct),de=()=>{if(!Wt(qe))return;let{start:vo,end:ib}=Jo(qe);vo===br&&ib===ct&&qn(qe,Ye,jt)}}),()=>de()},[O,k,M,T,b,C,h]);let G=(0,at.useRef)(null),K=ne(a),Qe=(0,at.useRef)(null);(0,at.useEffect)(()=>{if(!D||!B)return;let L=en(B);if(!L)return;G.current=L;let de=()=>{N.current=!1},qe=()=>{if(!o||!N.current)return;let{activeId:jt}=o.getState();jt!==null&&jt!==Qe.current&&(N.current=!1)},Ye={passive:!0,capture:!0};return L.addEventListener("wheel",de,Ye),L.addEventListener("touchmove",de,Ye),L.addEventListener("scroll",qe,Ye),()=>{L.removeEventListener("wheel",de,!0),L.removeEventListener("touchmove",de,!0),L.removeEventListener("scroll",qe,!0)}},[D,B,o]),ke(()=>{h&&(E.current||(N.current=!0))},[h]),ke(()=>{C!=="always"&&D||(N.current=D)},[C,D]);let ot=o.useState("resetValueOnSelect");ir(()=>{var L,de;let qe=N.current;if(!o||!D||!qe&&!ot)return;let{baseElement:Ye,contentElement:jt,activeId:br}=o.getState();if(!(Ye&&!Wt(Ye))){if(jt?.hasAttribute("data-placing")){let ct=new MutationObserver(R);return ct.observe(jt,{attributeFilter:["data-placing"]}),()=>ct.disconnect()}if(C&&qe){let ct=K(b),vo=ct!==void 0?ct:(L=v_(b))!=null?L:o.first();Qe.current=vo,o.move(vo??null)}else{let ct=(de=o.item(br||o.first()))==null?void 0:de.element;ct&&"scrollIntoView"in ct&&ct.scrollIntoView({block:"nearest",inline:"nearest"})}}},[o,D,O,h,C,ot,K,b]),(0,at.useEffect)(()=>{if(!k)return;let L=A.current;if(!L)return;let de=[L,B].filter(Ye=>!!Ye),qe=Ye=>{de.every(jt=>Oa(Ye,jt))&&o?.setValue(P)};for(let Ye of de)Ye.addEventListener("focusout",qe);return()=>{for(let Ye of de)Ye.removeEventListener("focusout",qe)}},[k,B,o,P]);let fe=L=>L.currentTarget.value.length>=l,Oe=w.onChange,q=ze(c??fe),Ie=ze(s??!o.tag),Je=ne(L=>{if(Oe?.(L),L.defaultPrevented||!o)return;let de=L.currentTarget,{value:qe,selectionStart:Ye,selectionEnd:jt}=de,br=L.nativeEvent;if(N.current=!0,m_(br)&&(br.isComposing&&(N.current=!1,E.current=!0),k)){let ct=br.inputType==="insertText"||br.inputType==="insertCompositionText",vo=Ye===qe.length;V(ct&&vo)}if(Ie(L)){let ct=qe===o.getState().value;o.setValue(qe),queueMicrotask(()=>{qn(de,Ye,jt)}),k&&C&&ct&&R()}q(L)&&o.show(),(!C||!N.current)&&o.setActiveId(null)}),Ut=w.onCompositionEnd,Nr=ne(L=>{N.current=!0,E.current=!1,Ut?.(L),!L.defaultPrevented&&C&&R()}),jo=w.onMouseDown,po=ze(v??(()=>!!o?.getState().includesBaseElement)),Hs=ze(x),zs=ze(f??fe),Ws=ne(L=>{jo?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||o&&(po(L)&&o.setActiveId(null),Hs(L)&&o.setValue(P),zs(L)&&ro(L.currentTarget,"mouseup",o.show)))}),Nc=w.onKeyDown,Jh=ze(p??fe),eb=ne(L=>{if(Nc?.(L),L.repeat||(N.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!o)return;let{open:de}=o.getState();de||(L.key==="ArrowUp"||L.key==="ArrowDown")&&Jh(L)&&(L.preventDefault(),o.show())}),Mc=w.onBlur,tb=ne(L=>{N.current=!1,Mc?.(L),L.defaultPrevented}),rb=zt(w.id),ob=p_(y)?y:void 0,nb=o.useState(L=>L.activeId===null);return w=Q(j({id:rb,role:"combobox","aria-autocomplete":ob,"aria-haspopup":Cu(B,"listbox"),"aria-expanded":D,"aria-controls":B?.id,"data-active-item":nb||void 0,value:P},w),{ref:Ne(A,w.ref),onChange:Je,onCompositionEnd:Nr,onMouseDown:Ws,onKeyDown:eb,onBlur:tb}),w=Gu(Q(j({store:o,focusable:n},w),{moveOnKeyPress:L=>xu(_,L)?!1:(k&&V(!0),!0)})),w=ju(j({store:o},w)),j({autoComplete:"off"},w)}),La=xe(function(t){let r=g_(t);return Se(f_,r)});var $m=u(I(),1);function ja(e={}){let t=Nu(e);return(0,$m.jsx)(Om,{value:t,children:e.children})}var io=u(me(),1),h_="button";function Km(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?Cr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?Cr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var b_=Symbol("command"),qu=Ce(function(t){var r=t,{clickOnEnter:o=!0,clickOnSpace:n=!0}=r,i=ae(r,["clickOnEnter","clickOnSpace"]);let a=(0,io.useRef)(null),[s,l]=(0,io.useState)(!1);(0,io.useEffect)(()=>{a.current&&l(Cr(a.current))},[]);let[c,d]=(0,io.useState)(!1),f=(0,io.useRef)(!1),m=So(i),[p,v]=$f(i,b_,!0),x=i.onKeyDown,_=ne(S=>{x?.(S);let A=S.currentTarget;if(S.defaultPrevented||p||m||!pt(S)||St(A)||A.isContentEditable)return;let O=o&&S.key==="Enter",R=n&&S.key===" ",N=S.key==="Enter"&&!o,E=S.key===" "&&!n;if(N||E){S.preventDefault();return}if(O||R){let C=Km(S);if(O){if(!C){S.preventDefault();let k=S,{view:M}=k,V=ae(k,["view"]),h=()=>Tu(A,V);Ou()?ro(A,"keyup",h):queueMicrotask(h)}}else R&&(f.current=!0,C||(S.preventDefault(),d(!0)))}}),y=i.onKeyUp,w=ne(S=>{if(y?.(S),S.defaultPrevented||p||m||S.metaKey)return;let A=n&&S.key===" ";if(f.current&&A&&(f.current=!1,!Km(S))){S.preventDefault(),d(!1);let O=S.currentTarget,R=S,{view:N}=R,E=ae(R,["view"]);queueMicrotask(()=>Tu(O,E))}});return i=Q(j(j({"data-active":c||void 0,type:s?"button":void 0},v),i),{ref:Ne(a,i.ref),onKeyDown:_,onKeyUp:w}),i=ri(i),i}),oA=xe(function(t){let r=qu(t);return Se(h_,r)});var Ba=u(me(),1),Xm=u(I(),1),__="span";function Zm(e){return zn(e).toLowerCase()}function x_(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function w_(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function y_(e){return e.sort(([t],[r])=>t-r)}function S_(e,t){if(!e||!t)return e;let r=Du(t).filter(Boolean).map(Zm),o=[],n=(l,c=!1)=>(0,Xm.jsx)("span",{"data-autocomplete-value":c?"":void 0,"data-user-value":c?void 0:"",children:l},o.length),i=y_(w_(x_(Zm(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,c],d)=>{var f;let m=e.slice(l,l+c),p=(f=i[d+1])==null?void 0:f[0],v=e.slice(l+c,p);return[m,v]})].forEach((l,c)=>{l&&o.push(n(l,c%2===0))}),o}var C_=Ce(function(t){var r=t,{store:o,value:n,userValue:i}=r,a=ae(r,["store","value","userValue"]);let s=ln();o=o||s;let l=(0,Ba.useContext)(Fa),c=n??l,d=nn(o,m=>i??m?.value),f=(0,Ba.useMemo)(()=>{if(c)return d?S_(c,d):c},[c,d]);return a=j({children:f},a),it(a)}),Ha=xe(function(t){let r=C_(t);return Se(__,r)});var Qm=u(me(),1),E_="div";function Jm(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function P_(e){let t=Jm(e);return t?or(e.currentTarget,t):!1}var Yu=Symbol("composite-hover");function O_(e){let t=Jm(e);if(!t)return!1;do{if(kt(t,Yu)&&t[Yu])return!0;t=t.parentElement}while(t);return!1}var Uu=Ce(function(t){var r=t,{store:o,focusOnHover:n=!0,blurOnHoverEnd:i=!!n}=r,a=ae(r,["store","focusOnHover","blurOnHoverEnd"]);let s=Aa();o=o||s,nt(o,!1);let l=Kf(),c=a.onMouseMove,d=ze(n),f=ne(_=>{if(c?.(_),!_.defaultPrevented&&l()&&d(_)){if(!Hu(_.currentTarget)){let y=o?.getState().baseElement;y&&!Wt(y)&&y.focus()}o?.setActiveId(_.currentTarget.id)}}),m=a.onMouseLeave,p=ze(i),v=ne(_=>{var y;m?.(_),!_.defaultPrevented&&l()&&(P_(_)||O_(_)||d(_)&&p(_)&&(o?.setActiveId(null),(y=o?.getState().baseElement)==null||y.focus()))}),x=(0,Qm.useCallback)(_=>{_&&(_[Yu]=!0)},[]);return a=Q(j({},a),{ref:Ne(x,a.ref),onMouseMove:f,onMouseLeave:v}),it(a)}),_A=oo(xe(function(t){let r=Uu(t);return Se(E_,r)}));var za=u(me(),1),T_="div",$u=Ce(function(t){var r=t,{store:o,shouldRegisterItem:n=!0,getItem:i=Wn,element:a}=r,s=ae(r,["store","shouldRegisterItem","getItem","element"]);let l=Zf();o=o||l;let c=zt(s.id),d=(0,za.useRef)(a);return(0,za.useEffect)(()=>{let f=d.current;if(!c||!f||!n)return;let m=i({id:c,element:f});return o?.renderItem(m)},[c,n,i,o]),s=Q(j({},s),{ref:Ne(d,s.ref)}),it(s)}),PA=xe(function(t){let r=$u(t);return Se(T_,r)});var Pr=u(me(),1),tp=u(I(),1),A_="button";function I_(e){return Gn(e)?!0:e.tagName==="INPUT"&&!Cr(e)}function V_(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function R_(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function ep(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=en(e);if(!a)return;let s=V_(a,o),l,c;for(let d=0;d=0){c!==void 0&&cK.rowId===w);return x.ariaPosInSet+G.findIndex(K=>K.id===p)},isTabbable(P){if(!P?.renderedItems.length)return!0;if(P.virtualFocus)return!1;if(s)return!0;if(P.activeId===null)return!1;let G=o?.item(P.activeId);return G?.disabled||!G?.element?!0:P.activeId===p}}),E=(0,Pr.useCallback)(P=>{var G;let K=Q(j({},P),{id:p||P.id,rowId:w,disabled:!!y,children:(G=P.element)==null?void 0:G.textContent});return l?l(K):K},[p,w,y,l]),C=f.onFocus,k=(0,Pr.useRef)(!1),M=ne(P=>{if(C?.(P),P.defaultPrevented||Pa(P)||!p||!o||k_(P,o))return;let{virtualFocus:G,baseElement:K}=o.getState();if(o.setActiveId(p),Gn(P.currentTarget)&&Rm(P.currentTarget),!G||!pt(P)||I_(P.currentTarget)||!K?.isConnected)return;Eo()&&P.currentTarget.hasAttribute("data-autofocus")&&P.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),k.current=!0,P.relatedTarget===K||Io(o,P.relatedTarget)?km(K):K.focus()}),V=f.onBlurCapture,h=ne(P=>{if(V?.(P),P.defaultPrevented)return;let G=o?.getState();G?.virtualFocus&&k.current&&(k.current=!1,P.preventDefault(),P.stopPropagation())}),g=f.onKeyDown,T=ze(i),b=ze(a),D=ne(P=>{if(g?.(P),P.defaultPrevented||!pt(P)||!o)return;let{currentTarget:G}=P,K=o.getState(),Qe=o.item(p),ot=!!Qe?.rowId,fe=K.orientation!=="horizontal",Oe=K.orientation!=="vertical",q=()=>!!(ot||Oe||!K.baseElement||!St(K.baseElement)),Je={ArrowUp:(ot||fe)&&o.up,ArrowRight:(ot||Oe)&&o.next,ArrowDown:(ot||fe)&&o.down,ArrowLeft:(ot||Oe)&&o.previous,Home:()=>{if(q())return!ot||P.ctrlKey?o?.first():o?.previous(-1)},End:()=>{if(q())return!ot||P.ctrlKey?o?.last():o?.next(-1)},PageUp:()=>ep(G,o,o?.up,!0),PageDown:()=>ep(G,o,o?.down)}[P.key];if(Je){if(Gn(G)){let Nr=Jo(G),jo=Oe&&P.key==="ArrowLeft",po=Oe&&P.key==="ArrowRight",Hs=fe&&P.key==="ArrowUp",zs=fe&&P.key==="ArrowDown";if(po||zs){let{length:Ws}=Su(G);if(Nr.end!==Ws)return}else if((jo||Hs)&&Nr.start!==0)return}let Ut=Je();if(T(P)||Ut!==void 0){if(!b(P))return;P.preventDefault(),o.move(Ut)}}}),B=(0,Pr.useMemo)(()=>({id:p,baseElement:S}),[p,S]);return f=ar(f,P=>(0,tp.jsx)(em.Provider,{value:B,children:P}),[B]),f=Q(j({id:p,"data-active-item":A||void 0},f),{ref:Ne(v,f.ref),tabIndex:N?f.tabIndex:-1,onFocus:M,onBlurCapture:h,onKeyDown:D}),f=qu(f),f=$u(Q(j({store:o},f),{getItem:E,shouldRegisterItem:p?f.shouldRegisterItem:!1})),it(Q(j({},f),{"aria-setsize":O,"aria-posinset":R}))}),BA=oo(xe(function(t){let r=Ku(t);return Se(A_,r)}));var Wa=u(me(),1),Zu=u(I(),1),D_="div";function N_(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function M_(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var rp=Ce(function(t){var r=t,{store:o,value:n,hideOnClick:i,setValueOnClick:a,selectValueOnClick:s=!0,resetValueOnSelect:l,focusOnHover:c=!1,moveOnKeyPress:d=!0,getItem:f}=r,m=ae(r,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]),p;let v=ln();o=o||v,nt(o,!1);let{resetValueOnSelectState:x,multiSelectable:_,selected:y}=Ra(o,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(h){return Array.isArray(h.selectedValue)},selected(h){return N_(h.selectedValue,n)}}),w=(0,Wa.useCallback)(h=>{let g=Q(j({},h),{value:n});return f?f(g):g},[n,f]);a=a??!_,i=i??(n!=null&&!_);let S=m.onClick,A=ze(a),O=ze(s),R=ze((p=l??x)!=null?p:_),N=ze(i),E=ne(h=>{S?.(h),!h.defaultPrevented&&(Mf(h)||Nf(h)||(n!=null&&(O(h)&&(R(h)&&o?.resetValue(),o?.setSelectedValue(g=>Array.isArray(g)?g.includes(n)?g.filter(T=>T!==n):[...g,n]:n)),A(h)&&o?.setValue(n)),N(h)&&o?.hide()))}),C=m.onKeyDown,k=ne(h=>{if(C?.(h),h.defaultPrevented)return;let g=o?.getState().baseElement;if(!g||Wt(g))return;(h.key.length===1||h.key==="Backspace"||h.key==="Delete")&&(queueMicrotask(()=>g.focus()),St(g)&&o?.setValue(g.value))});_&&y!=null&&(m=j({"aria-selected":y},m)),m=ar(m,h=>(0,Zu.jsx)(Fa.Provider,{value:n,children:(0,Zu.jsx)(Am.Provider,{value:y??!1,children:h})}),[n,y]);let M=(0,Wa.useContext)(Na);m=Q(j({role:M_(M),children:n},m),{onClick:E,onKeyDown:k});let V=ze(d);return m=Ku(Q(j({store:o},m),{getItem:w,moveOnKeyPress:h=>{if(!V(h))return!1;let g=new Event("combobox-item-move"),T=o?.getState().baseElement;return T?.dispatchEvent(g),!0}})),m=Uu(j({store:o,focusOnHover:c},m)),m}),oi=oo(xe(function(t){let r=rp(t);return Se(D_,r)}));var F_="label",L_=Ce(function(t){var r=t,{store:o}=r,n=ae(r,["store"]);let i=Ma();o=o||i,nt(o,!1);let a=o.useState(s=>{var l;return(l=s.baseElement)==null?void 0:l.id});return n=j({htmlFor:a},n),it(n)}),Ga=oo(xe(function(t){let r=L_(t);return Se(F_,r)}));var un=u(me(),1),ip=u(sd(),1),Xu=u(I(),1),j_="div";function op(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function B_(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function np(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function Qu(e,t,r){return!r&&t!==!1&&(!e||!!t)}var H_=Ce(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=Mu();o=o||a,nt(o,!1);let s=(0,un.useRef)(null),l=zt(i.id),[c,d]=(0,un.useState)(null),f=o.useState("open"),m=o.useState("mounted"),p=o.useState("animated"),v=o.useState("contentElement"),x=nn(o.disclosure,"contentElement");ke(()=>{s.current&&o?.setContentElement(s.current)},[o]),ke(()=>{let S;return o?.setState("animated",A=>(S=A,!0)),()=>{S!==void 0&&o?.setState("animated",S)}},[o]),ke(()=>{if(p){if(!v?.isConnected){d(null);return}return B_(()=>{d(f?"enter":m?"leave":null)})}},[p,v,f,m]),ke(()=>{if(!o||!p||!c||!v)return;let S=()=>o?.setState("animating",!1),A=()=>(0,ip.flushSync)(S);if(c==="leave"&&f||c==="enter"&&!f)return;if(typeof p=="number")return op(p,A);let{transitionDuration:O,animationDuration:R,transitionDelay:N,animationDelay:E}=getComputedStyle(v),{transitionDuration:C="0",animationDuration:k="0",transitionDelay:M="0",animationDelay:V="0"}=x?getComputedStyle(x):{},h=np(N,E,M,V),g=np(O,R,C,k),T=h+g;if(!T){c==="enter"&&o.setState("animated",!1),S();return}let b=1e3/60,D=Math.max(T-b,0);return op(D,A)},[o,p,v,x,f,c]),i=ar(i,S=>(0,Xu.jsx)(ka,{value:o,children:S}),[o]);let _=Qu(m,i.hidden,n),y=i.style,w=(0,un.useMemo)(()=>_?Q(j({},y),{display:"none"}):y,[_,y]);return i=Q(j({id:l,"data-open":f||void 0,"data-enter":c==="enter"||void 0,"data-leave":c==="leave"||void 0,hidden:_},i),{ref:Ne(l?o.setContentElement:null,s,i.ref),style:w}),it(i)}),z_=xe(function(t){let r=H_(t);return Se(j_,r)}),pI=xe(function(t){var r=t,{unmountOnHide:o}=r,n=ae(r,["unmountOnHide"]);let i=Mu(),a=n.store||i;return nn(a,l=>!o||l?.mounted)===!1?null:(0,Xu.jsx)(z_,j({},n))});var qa=u(me(),1),Ju=u(I(),1),W_="div",ap=Ce(function(t){var r=t,{store:o,alwaysVisible:n}=r,i=ae(r,["store","alwaysVisible"]);let a=ln(!0),s=Lu();o=o||s;let l=!!o&&o===a;nt(o,!1);let c=(0,qa.useRef)(null),d=zt(i.id),f=o.useState("mounted"),m=Qu(f,i.hidden,n),p=m?Q(j({},i.style),{display:"none"}):i.style,v=o.useState(R=>Array.isArray(R.selectedValue)),x=qf(c,"role",i.role),y=(x==="listbox"||x==="tree"||x==="grid")&&v||void 0,[w,S]=(0,qa.useState)(!1),A=o.useState("contentElement");ke(()=>{if(!f)return;let R=c.current;if(!R||A!==R)return;let N=()=>{S(!!R.querySelector("[role='listbox']"))},E=new MutationObserver(N);return E.observe(R,{subtree:!0,childList:!0,attributeFilter:["role"]}),N(),()=>E.disconnect()},[f,A]),w||(i=j({role:"listbox","aria-multiselectable":y},i)),i=ar(i,R=>(0,Ju.jsx)(Tm,{value:o,children:(0,Ju.jsx)(Na.Provider,{value:x,children:R})}),[o,x]);let O=d&&(!a||!l)?o.setContentElement:null;return i=Q(j({id:d,hidden:m},i),{ref:Ne(O,c,i.ref),style:p}),it(i)}),ni=xe(function(t){let r=ap(t);return Se(W_,r)});var pp=u(cp(),1);var vp=u(At(),1),Or=u(Z(),1),Vo=u(z(),1),Gt=u(U(),1);var K_=[],ii=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:K_;var ai=u(z(),1),Z_=[];function vt({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:Z_,[o,n]=(0,ai.useState)(r),[i,a]=(0,ai.useState)(!1);return(0,ai.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let c=Array.isArray(l)&&l.length>0?l:r;n(c)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var le=u(I(),1);function dp(e=""){return(0,pp.default)(e.trim().toLowerCase())}var fp=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function mp(e,t){return`${e}-${t}`}var gp=({selected:e})=>(0,le.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,le.jsx)(Gt.Icon,{icon:go})}),hp=({selected:e})=>(0,le.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function bp({view:e,filter:t,onChangeView:r}){let o=(0,vp.useInstanceId)(bp,"dataviews-filter-list-box"),[n,i]=(0,Vo.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=ii(t,a);return(0,le.jsx)(Gt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Or.sprintf)((0,Or.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(mp(o,t.elements[0].value))},render:(0,le.jsx)(Gt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,le.jsxs)(Gt.Composite.Hover,{render:(0,le.jsx)(Gt.Composite.Item,{id:mp(o,l.value),render:(0,le.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let c=a?[...(e.filters??[]).map(d=>d.field===t.field?{...d,operator:a.operator||t.operators[0],value:fp(t,a,l.value)}:d)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:fp(t,a,l.value)}];r({...e,page:1,filters:c})}}),children:[t.singleSelection&&(0,le.jsx)(hp,{selected:s===l.value}),!t.singleSelection&&(0,le.jsx)(gp,{selected:s.includes(l.value)}),(0,le.jsx)("span",{children:l.label})]},l.value))})}function X_({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Vo.useState)(""),i=(0,Vo.useDeferredValue)(o),a=e.filters?.find(c=>c.field===t.field),s=ii(t,a),l=(0,Vo.useMemo)(()=>{let c=dp(i);return t.elements.filter(d=>dp(d.label).includes(c))},[t.elements,i]);return(0,le.jsxs)(ja,{selectedValue:s,setSelectedValue:c=>{let d=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:c}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:c}];r({...e,page:1,filters:d})},setValue:n,children:[(0,le.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,le.jsx)(Ga,{render:(0,le.jsx)(Gt.VisuallyHidden,{children:(0,Or.__)("Search items")}),children:(0,Or.__)("Search items")}),(0,le.jsx)(La,{autoSelect:"always",placeholder:(0,Or.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,le.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,le.jsx)(Gt.Icon,{icon:Bl})})]}),(0,le.jsxs)(ni,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(c=>(0,le.jsxs)(oi,{resetValueOnSelect:!1,value:c.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,le.jsx)(hp,{selected:s===c.value}),!t.singleSelection&&(0,le.jsx)(gp,{selected:s.includes(c.value)}),(0,le.jsxs)("span",{children:[(0,le.jsx)(Ha,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:c.label}),!!c.description&&(0,le.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:c.description})]})]},c.value)),!l.length&&(0,le.jsx)("p",{children:(0,Or.__)("No results found")})]})]})}function _p(e){let{elements:t,isLoading:r}=vt({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,le.jsx)(Gt.Spinner,{})});if(t.length===0)return(0,le.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Or.__)("No elements found")});let o=t.length>10?X_:bp;return(0,le.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var yp=u(wp(),1),Sp=u(At(),1),ec=u(z(),1),Cp=u(U(),1);var tc=u(I(),1);function Ep({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(c=>c.field===e.field),i=ii(e,n),a=(0,ec.useMemo)(()=>{let c=o.find(d=>d.id===e.field);return c&&{...c,isValid:{},getValue:({item:d})=>d[c.id],setValue:({value:d})=>({[c.id]:d})}},[o,e.field]),s=(0,ec.useMemo)(()=>(t.filters??[]).reduce((c,d)=>(c[d.field]=d.value,c),{}),[t.filters]),l=(0,Sp.useEvent)(c=>{if(!a||!n)return;let d=a.getValue({item:c});(0,yp.default)(d,i)||r({...t,filters:(t.filters??[]).map(f=>f.field===e.field?{...f,operator:n.operator||e.operators[0],value:d===""?void 0:d}:f)})});return!a||!a.Edit||!n?null:(0,tc.jsx)(Cp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,tc.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var Q_=Math.pow(10,8)*24*60*60*1e3,JI=-Q_,Ua=6048e5,Pp=864e5;var J_=3600;var Op=J_*24,eV=Op*7,ex=Op*365.2425,tx=ex/12,tV=tx*3,rc=Symbol.for("constructDateFrom");function Ke(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&rc in e?e[rc](t):e instanceof Date?new e.constructor(t):new Date(t)}function he(e,t){return Ke(t||e,e)}function $a(e,t,r){let o=he(e,r?.in);return isNaN(t)?Ke(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function Ka(e,t,r){let o=he(e,r?.in);if(isNaN(t))return Ke(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Ke(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var rx={};function ao(){return rx}function Tr(e,t){let r=ao(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=he(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function oc(e){let t=he(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function Tp(e,...t){let r=Ke.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function nc(e,t){let r=he(e,t?.in);return r.setHours(0,0,0,0),r}function Ap(e,t,r){let[o,n]=Tp(r?.in,e,t),i=nc(o),a=nc(n),s=+i-oc(i),l=+a-oc(a);return Math.round((s-l)/Pp)}function Ip(e,t){let r=Za(e,t),o=Ke(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Ro(o)}function Vp(e,t,r){return $a(e,t*7,r)}function Rp(e,t,r){return Ka(e,t*12,r)}function kp(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function cn(e){return!(!kp(e)&&typeof e!="number"||isNaN(+he(e)))}function Dp(e,t){let r=he(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Xa(e,t){let r=he(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var ox={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Np=(e,t,r)=>{let o,n=ox[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Qa(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var nx={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ix={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},ax={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Mp={date:Qa({formats:nx,defaultWidth:"full"}),time:Qa({formats:ix,defaultWidth:"full"}),dateTime:Qa({formats:ax,defaultWidth:"full"})};var sx={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Fp=(e,t,r,o)=>sx[e];function dn(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var lx={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ux={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},cx={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},dx={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},fx={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},mx={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},px=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},Lp={ordinalNumber:px,era:dn({values:lx,defaultWidth:"wide"}),quarter:dn({values:ux,defaultWidth:"wide",argumentCallback:e=>e-1}),month:dn({values:cx,defaultWidth:"wide"}),day:dn({values:dx,defaultWidth:"wide"}),dayPeriod:dn({values:fx,defaultWidth:"wide",formattingValues:mx,defaultFormattingWidth:"wide"})};function fn(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?gx(s,f=>f.test(a)):vx(s,f=>f.test(a)),c;c=e.valueCallback?e.valueCallback(l):l,c=r.valueCallback?r.valueCallback(c):c;let d=t.slice(a.length);return{value:c,rest:d}}}function vx(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function gx(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var hx=/^(\d+)(th|st|nd|rd)?/i,bx=/\d+/i,_x={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},xx={any:[/^b/i,/^(a|c)/i]},wx={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},yx={any:[/1/i,/2/i,/3/i,/4/i]},Sx={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Cx={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Ex={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Px={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Ox={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Tx={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Bp={ordinalNumber:jp({matchPattern:hx,parsePattern:bx,valueCallback:e=>parseInt(e,10)}),era:fn({matchPatterns:_x,defaultMatchWidth:"wide",parsePatterns:xx,defaultParseWidth:"any"}),quarter:fn({matchPatterns:wx,defaultMatchWidth:"wide",parsePatterns:yx,defaultParseWidth:"any",valueCallback:e=>e+1}),month:fn({matchPatterns:Sx,defaultMatchWidth:"wide",parsePatterns:Cx,defaultParseWidth:"any"}),day:fn({matchPatterns:Ex,defaultMatchWidth:"wide",parsePatterns:Px,defaultParseWidth:"any"}),dayPeriod:fn({matchPatterns:Ox,defaultMatchWidth:"any",parsePatterns:Tx,defaultParseWidth:"any"})};var ic={code:"en-US",formatDistance:Np,formatLong:Mp,formatRelative:Fp,localize:Lp,match:Bp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Hp(e,t){let r=he(e,t?.in);return Ap(r,Xa(r))+1}function zp(e,t){let r=he(e,t?.in),o=+Ro(r)-+Ip(r);return Math.round(o/Ua)+1}function Ja(e,t){let r=he(e,t?.in),o=r.getFullYear(),n=ao(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ke(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Tr(a,t),l=Ke(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let c=Tr(l,t);return+r>=+s?o+1:+r>=+c?o:o-1}function Wp(e,t){let r=ao(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=Ja(e,t),i=Ke(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Tr(i,t)}function Gp(e,t){let r=he(e,t?.in),o=+Tr(r,t)-+Wp(r,t);return Math.round(o/Ua)+1}function ce(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Ar={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return ce(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ce(r+1,2)},d(e,t){return ce(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return ce(e.getHours()%12||12,t.length)},H(e,t){return ce(e.getHours(),t.length)},m(e,t){return ce(e.getMinutes(),t.length)},s(e,t){return ce(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ce(n,t.length)}};var mn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},ac={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Ar.y(e,t)},Y:function(e,t,r,o){let n=Ja(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ce(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ce(i,t.length)},R:function(e,t){let r=Za(e);return ce(r,t.length)},u:function(e,t){let r=e.getFullYear();return ce(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ce(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ce(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Ar.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return ce(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=Gp(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ce(n,t.length)},I:function(e,t,r){let o=zp(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ce(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Ar.d(e,t)},D:function(e,t,r){let o=Hp(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ce(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ce(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ce(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return ce(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=mn.noon:o===0?n=mn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=mn.evening:o>=12?n=mn.afternoon:o>=4?n=mn.morning:n=mn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Ar.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Ar.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ce(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Ar.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Ar.s(e,t)},S:function(e,t){return Ar.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return Yp(o);case"XXXX":case"XX":return ko(o);default:return ko(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return Yp(o);case"xxxx":case"xx":return ko(o);default:return ko(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+qp(o,":");default:return"GMT"+ko(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+qp(o,":");default:return"GMT"+ko(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ce(o,t.length)},T:function(e,t,r){return ce(+e,t.length)}};function qp(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+ce(i,2)}function Yp(e,t){return e%60===0?(e>0?"-":"+")+ce(Math.abs(e)/60,2):ko(e,t)}function ko(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ce(Math.trunc(o/60),2),i=ce(o%60,2);return r+n+t+i}var Up=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},$p=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Ax=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Up(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",Up(o,t)).replace("{{time}}",$p(n,t))},Kp={p:$p,P:Ax};var Ix=/^D+$/,Vx=/^Y+$/,Rx=["D","DD","YY","YYYY"];function Zp(e){return Ix.test(e)}function Xp(e){return Vx.test(e)}function Qp(e,t,r){let o=kx(e,t,r);if(console.warn(o),Rx.includes(e))throw new RangeError(o)}function kx(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Dx=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Nx=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Mx=/^'([^]*?)'?$/,Fx=/''/g,Lx=/[a-zA-Z]/;function si(e,t,r){let o=ao(),n=r?.locale??o.locale??ic,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=he(e,r?.in);if(!cn(s))throw new RangeError("Invalid time value");let l=t.match(Nx).map(d=>{let f=d[0];if(f==="p"||f==="P"){let m=Kp[f];return m(d,n.formatLong)}return d}).join("").match(Dx).map(d=>{if(d==="''")return{isToken:!1,value:"'"};let f=d[0];if(f==="'")return{isToken:!1,value:jx(d)};if(ac[f])return{isToken:!0,value:d};if(f.match(Lx))throw new RangeError("Format string contains an unescaped latin alphabet character `"+f+"`");return{isToken:!1,value:d}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let c={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(d=>{if(!d.isToken)return d.value;let f=d.value;(!r?.useAdditionalWeekYearTokens&&Xp(f)||!r?.useAdditionalDayOfYearTokens&&Zp(f))&&Qp(f,t,String(e));let m=ac[f[0]];return m(s,f,n.localize,c)}).join("")}function jx(e){let t=e.match(Mx);return t?t[1].replace(Fx,"'"):e}function Do(e,t,r){return $a(e,-t,r)}function es(e,t,r){return Ka(e,-t,r)}function Jp(e,t,r){return Vp(e,-t,r)}function ts(e,t,r){return Rp(e,-t,r)}var H=u(Z(),1),Fe=u(z(),1),Pt=u(No(),1);var sc=u(I(),1),We={Name:(0,sc.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,sc.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function tv(e,t){switch(t){case"days":return Do(new Date,e);case"weeks":return Jp(new Date,e);case"months":return es(new Date,e);case"years":return ts(new Date,e);default:return new Date}}var rv={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},rs=[{name:Te,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Ae,...rv},{name:dt,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),We),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:ft,...rv},{name:_t,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),We),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:xt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),We),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=tv(r.value,r.unit),n=(0,Pt.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:It,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),We),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=tv(r.value,r.unit);return(0,Pt.getDate)(t.getValue({item:e}))(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:Re,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Lr,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:Br,label:(0,H.__)("Less than or equal"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:Hr,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),We),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:zr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r);return(0,Pt.getDate)(t.getValue({item:e}))(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r);return(0,Pt.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:Gr,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r);return(0,Pt.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:qr,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r);return(0,Pt.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:Jt,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:er,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:tr,label:(0,H.__)("Starts with"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Yr,label:(0,H.__)("On"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r),n=(0,Pt.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:Ur,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Fe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),We),filter(e,t,r){if(r===void 0)return!0;let o=(0,Pt.getDate)(r),n=(0,Pt.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],Mo=e=>rs.find(t=>t.name===e),ov=()=>rs.map(e=>e.name),nv=e=>rs.filter(t=>t.selection==="single").some(t=>t.name===e),iv=e=>rs.some(t=>t.name===e);var st=u(I(),1),Bx="Enter",Hx=" ",zx=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=Mo(t?.operator);return o!==void 0?o.filterText(r,e):(0,Ir.sprintf)((0,Ir.__)("Unknown status for %1$s"),r.name)};function Wx({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:Mo(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,st.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,st.jsx)(Kt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,st.jsx)(Kt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Ir.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,c=n?[...(t.filters??[]).map(d=>{if(d.field===e.field){let f=Mo(l)?.selection,m=Mo(s)?.selection,p=f!==m||[f,m].includes("custom");return{...d,value:p?void 0:d.value,operator:s}}return d})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:c})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function av({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,os.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(_=>_.field===i.field),c=[],d=(0,os.useMemo)(()=>{let _=r.find(y=>y.id===i.field);return _&&{..._,getValue:({item:y})=>y[_.id]}},[r,i.field]),{elements:f}=vt({elements:i.elements,getElements:i.getElements});if(f.length>0)c=f.filter(_=>i.singleSelection?_.value===l?.value:l?.value?.includes(_.value));else if(Array.isArray(l?.value)){let _=l.value.map(y=>d?.getValueFormatted({item:{[d.id]:y},field:d})||String(y));c=[{value:l.value,label:_}]}else if(typeof l?.value=="object")c=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let _=d!==void 0?d.getValueFormatted({item:{[d.id]:l.value},field:d}):String(l.value);c=[{value:l.value,label:_}]}let m=i.isPrimary,p=l?.isLocked,v=!p&&l?.value!==void 0,x=!p&&(!m||v);return(0,st.jsx)(Kt.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:_,onToggle:y})=>(0,st.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,st.jsx)(Kt.Tooltip,{text:(0,Ir.sprintf)((0,Ir.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,st.jsx)("div",{className:Y("dataviews-filters__summary-chip",{"has-reset":x,"has-values":v,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||y()},onKeyDown:w=>{!p&&[Bx,Hx].includes(w.key)&&(y(),w.preventDefault())},"aria-disabled":p,"aria-pressed":_,"aria-expanded":_,ref:n,children:(0,st.jsx)(zx,{activeElements:c,filterInView:l,filter:i})})}),x&&(0,st.jsx)(Kt.Tooltip,{text:m?(0,Ir.__)("Reset"):(0,Ir.__)("Remove"),placement:"top",children:(0,st.jsx)("button",{className:Y("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(w=>w.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,st.jsx)(Kt.Icon,{icon:In})})})]}),renderContent:()=>(0,st.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,st.jsx)(Wx,{...o}),o.filter.hasElements?(0,st.jsx)(_p,{...o,filter:{...o.filter,elements:f}}):(0,st.jsx)(Ep,{...o,fields:r})]})})}var ns=u(U(),1),sv=u(Z(),1),lv=u(z(),1);var Vr=u(I(),1),{Menu:li}=J(ns.privateApis);function lc({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Vr.jsxs)(li,{children:[(0,Vr.jsx)(li.TriggerButton,{...n}),(0,Vr.jsx)(li.Popover,{children:i.map(a=>(0,Vr.jsx)(li.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Vr.jsx)(li.ItemLabel,{children:a.name})},a.field))})]})}function Gx({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Vr.jsx)(lc,{triggerProps:{render:(0,Vr.jsx)(ns.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,sv.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var uv=(0,lv.forwardRef)(Gx);var cv=u(U(),1),dv=u(Z(),1),fv=u(I(),1);function mv({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,fv.jsx)(cv.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,dv.__)("Reset")})}var pv=u(z(),1);function qx(e,t){return(0,pv.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>nv(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&iv(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var ui=qx;var ci=u(I(),1);function Yx({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,pn.useContext)($),a=(0,pn.useRef)(null),s=ui(t,r),l=(0,ci.jsx)(uv,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),c=s.filter(f=>f.isVisible);if(c.length===0)return null;let d=[...c.map(f=>(0,ci.jsx)(av,{filter:f,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},f.field)),l];return d.push((0,ci.jsx)(mv,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,ci.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:d})}var di=(0,pn.memo)(Yx);var so=u(z(),1),vv=u(U(),1);var is=u(Z(),1);var cr=u(I(),1);function Ux(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,so.useContext)($),a=(0,so.useRef)(null),s=(0,so.useCallback)(p=>{r(p),i(!0)},[r,i]),c=!!e.filter(p=>p.isVisible).length;if(e.length===0)return null;let d={label:(0,is.__)("Add filter"),"aria-expanded":!1,isPressed:!1},f={label:(0,is._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=(0,cr.jsx)(vv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Vn,...c?f:d});return(0,cr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:c?(0,cr.jsx)($x,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,cr.jsx)(lc,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:m}})})}function $x({buttonRef:e,filtersCount:t,children:r}){return(0,so.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,cr.jsxs)(cr.Fragment,{children:[r,!!t&&(0,cr.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var as=Ux;var gv=u(z(),1);var hv=u(I(),1);function Kx(e){let{isShowingFilter:t}=(0,gv.useContext)($);return t?(0,hv.jsx)(di,{...e}):null}var ss=Kx;var bv=u(z(),1),_v=u(Z(),1);var uc=u(I(),1);function cc({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,view:s,onChangeView:l,selection:c,onChangeSelection:d,setOpenedFilter:f,onClickItem:m,isItemClickable:p,renderItemLink:v,defaultLayouts:x,empty:_=(0,uc.jsx)("p",{children:(0,_v.__)("No results")})}=(0,bv.useContext)($),y=Jr.find(w=>w.type===s.type&&x[w.type])?.component;return(0,uc.jsx)(y,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:a,onChangeView:l,onChangeSelection:d,selection:c,setOpenedFilter:f,onClickItem:m,renderItemLink:v,isItemClickable:p,view:s,empty:_})}var xv=u(z(),1);var fi=u(I(),1),Zx=[];function dc(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=Zx}=(0,xv.useContext)($),i=qo(n,o)&&[Ho,aa].includes(e.type);return!t||!r||r<=1&&!i?null:!!t&&(0,fi.jsxs)(F,{direction:"row",justify:"end",align:"center",className:"dataviews-footer",gap:"sm",children:[i&&(0,fi.jsx)(ca,{}),(0,fi.jsx)(lf,{})]})}var wv=u(Z(),1),Zt=u(z(),1),yv=u(U(),1),Sv=u(At(),1);var Cv=u(I(),1),Xx=(0,Zt.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Zt.useContext)($),[n,i,a]=(0,Sv.useDebouncedInput)(r.search);(0,Zt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,Zt.useRef)(o),l=(0,Zt.useRef)(r);(0,Zt.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,Zt.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let c=t||(0,wv.__)("Search");return(0,Cv.jsx)(yv.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:c,placeholder:c,size:"compact"})}),fc=Xx;var Pe=u(U(),1),lo=u(Z(),1),dr=u(z(),1);var pc=u(Pv(),1),Vv=u(At(),1);var Ov=u(U(),1),mc=u(Z(),1),Tv=u(z(),1);var Av=u(I(),1);function Iv(){let e=(0,Tv.useContext)($),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,Av.jsx)(Ov.ToggleControl,{label:(0,mc.__)("Enable infinite scroll"),help:(0,mc.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var ie=u(I(),1),{Menu:mi}=J(Pe.privateApis),Qx={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function vc(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,dr.useContext)($),o=Object.keys(r);if(o.length<=1)return null;let n=Jr.find(i=>e.type===i.type);return(0,ie.jsxs)(mi,{children:[(0,ie.jsx)(mi.TriggerButton,{render:(0,ie.jsx)(Pe.Button,{size:"compact",icon:n?.icon,label:(0,lo.__)("Layout")})}),(0,ie.jsx)(mi.Popover,{children:o.map(i=>{let a=Jr.find(s=>s.type===i);return a?(0,ie.jsx)(mi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,pc.default)("Invalid dataview")},children:(0,ie.jsx)(mi.ItemLabel,{children:a.label})},i):null})})]})}function Jx(){let{view:e,fields:t,onChangeView:r}=(0,dr.useContext)($),o=(0,dr.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,ie.jsx)(Pe.SelectControl,{__next40pxDefaultSize:!0,label:(0,lo.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function ew(){let{view:e,fields:t,onChangeView:r}=(0,dr.useContext)($);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,ie.jsx)(Pe.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,lo.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,pc.default)("Invalid direction")},children:oa.map(i=>(0,ie.jsx)(Pe.__experimentalToggleGroupControlOptionIcon,{value:i,icon:_d[i],label:ia[i]},i))})}function tw(){let{view:e,config:t,onChangeView:r}=(0,dr.useContext)($),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,ie.jsx)(Pe.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,lo.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,ie.jsx)(Pe.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function rw({title:e,description:t,children:r}){return(0,ie.jsxs)(Pe.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,ie.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,ie.jsx)(Pe.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,ie.jsx)(Pe.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,ie.jsx)(Pe.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:r})]})}function gc(){let{view:e}=(0,dr.useContext)($),t=(0,Vv.useInstanceId)(Rv,"dataviews-view-config-dropdown"),r=Jr.find(o=>o.type===e.type);return(0,ie.jsx)(Pe.Dropdown,{expandOnMobile:!0,popoverProps:{...Qx,id:t},renderToggle:({onToggle:o,isOpen:n})=>(0,ie.jsx)(Pe.Button,{size:"compact",icon:gl,label:(0,lo._x)("View options","View is used as a noun"),onClick:o,"aria-expanded":n?"true":"false","aria-controls":t}),renderContent:()=>(0,ie.jsx)(Pe.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,ie.jsx)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:(0,ie.jsxs)(rw,{title:(0,lo.__)("Appearance"),children:[(0,ie.jsxs)(F,{direction:"row",gap:"sm",className:"is-divided-in-two",children:[(0,ie.jsx)(Jx,{}),(0,ie.jsx)(ew,{})]}),!!r?.viewConfigOptions&&(0,ie.jsx)(r.viewConfigOptions,{}),(0,ie.jsx)(Iv,{}),(0,ie.jsx)(tw,{}),(0,ie.jsx)(ma,{})]})})})})}function Rv(){return(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(vc,{}),(0,ie.jsx)(gc,{})]})}var ow=(0,dr.memo)(Rv),kv=ow;var Dv=u(U(),1),Nv=u(z(),1);function we(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var Mv=u(I(),1),{ValidatedCheckboxControl:nw}=J(Dv.privateApis);function Fv({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:c,isValid:d}=e,f=(0,Nv.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,Mv.jsx)(nw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:we(d,i),hidden:o,label:l,help:c,checked:a({item:r}),onChange:f})}var ls=u(U(),1),Lv=u(z(),1);var hc=u(I(),1),{ValidatedComboboxControl:iw}=J(ls.privateApis);function jv({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:c,isValid:d}=t,f=l({item:e})??"",m=(0,Lv.useCallback)(x=>r(c({item:e,value:x??""})),[e,r,c]),{elements:p,isLoading:v}=vt({elements:t.elements,getElements:t.getElements});return v?(0,hc.jsx)(ls.Spinner,{}):(0,hc.jsx)(iw,{required:!!t.isValid?.required,customValidity:we(d,n),label:i,value:f,help:a,placeholder:s,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var ds=u(U(),1),qt=u(z(),1),cs=u(Z(),1),_c=u(No(),1);var gn=u(U(),1),bc=u(z(),1),fr=u(Z(),1);var vn=u(I(),1),aw={[xt]:[{value:"days",label:(0,fr.__)("Days")},{value:"weeks",label:(0,fr.__)("Weeks")},{value:"months",label:(0,fr.__)("Months")},{value:"years",label:(0,fr.__)("Years")}],[It]:[{value:"days",label:(0,fr.__)("Days ago")},{value:"weeks",label:(0,fr.__)("Weeks ago")},{value:"months",label:(0,fr.__)("Months ago")},{value:"years",label:(0,fr.__)("Years ago")}]};function us({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=aw[i===xt?"inThePast":"over"],{id:s,label:l,getValue:c,setValue:d}=r,f=c({item:t}),{value:m="",unit:p=a[0].value}=f&&typeof f=="object"?f:{},v=(0,bc.useCallback)(_=>o(d({item:t,value:{value:Number(_),unit:p}})),[o,d,t,p]),x=(0,bc.useCallback)(_=>o(d({item:t,value:{value:m,unit:_}})),[o,d,t,m]);return(0,vn.jsx)(gn.BaseControl,{id:s,className:Y(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,vn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,vn.jsx)(gn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:v}),(0,vn.jsx)(gn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,fr.__)("Unit"),value:p,options:a,onChange:x,hideLabelFromVision:!0})]})})}var Bv=u(No(),1);function hn(e){if(!e)return null;let t=(0,Bv.getDate)(e);return t&&cn(t)?t:null}var uo=u(I(),1),{DateCalendar:sw,ValidatedInputControl:lw}=J(ds.privateApis),uw=e=>e?typeof e=="string"?e:si(e,"yyyy-MM-dd'T'HH:mm"):"";function cw({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:c,getValue:d,isValid:f}=t,m=d({item:e}),p=typeof m=="string"?m:void 0,[v,x]=(0,qt.useState)(()=>hn(p)||new Date),_=(0,qt.useRef)(null),y=(0,qt.useRef)(),w=(0,qt.useRef)(null),S=(0,qt.useCallback)(k=>r(c({item:e,value:k})),[e,r,c]);(0,qt.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]);let A=(0,qt.useCallback)(k=>{let M;if(k){let V=k;if(p){let h=hn(p);h&&(V=new Date(k),V.setHours(h.getHours()),V.setMinutes(h.getMinutes()))}M=V.toISOString(),S(M),y.current&&clearTimeout(y.current)}else S(void 0);w.current=_.current&&_.current.ownerDocument.activeElement,y.current=setTimeout(()=>{_.current&&(_.current.focus(),_.current.blur(),S(M),w.current&&w.current instanceof HTMLElement&&w.current.focus())},0)},[S,p]),O=(0,qt.useCallback)(k=>{if(k){let M=new Date(k);S(M.toISOString());let V=hn(M.toISOString());V&&x(V)}else S(void 0)},[S]),{format:R}=t,N=R.weekStartsOn??(0,_c.getSettings)().l10n.startOfWeek,{timezone:{string:E}}=(0,_c.getSettings)(),C=s;return f?.required&&!n&&!o?C=`${s} (${(0,cs.__)("Required")})`:!f?.required&&n&&!o&&(C=`${s} (${(0,cs.__)("Optional")})`),(0,uo.jsx)(ds.BaseControl,{id:a,label:C,help:l,hideLabelFromVision:o,children:(0,uo.jsxs)(F,{direction:"column",gap:"lg",children:[(0,uo.jsx)(sw,{style:{width:"100%"},selected:p&&hn(p)||void 0,onSelect:A,month:v,onMonthChange:x,timeZone:E||void 0,weekStartsOn:N}),(0,uo.jsx)(lw,{ref:_,__next40pxDefaultSize:!0,required:!!f?.required,customValidity:we(f,i),type:"datetime-local",label:(0,cs.__)("Date time"),hideLabelFromVision:!0,value:p?uw(hn(p)||void 0):"",onChange:O})]})})}function Hv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===xt||i===It?(0,uo.jsx)(us,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,uo.jsx)(cw,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ht=u(U(),1),ge=u(z(),1),Ze=u(Z(),1),gt=u(No(),1);var ye=u(I(),1),{DateCalendar:dw,DateRangeCalendar:fw}=J(ht.privateApis),mw=[{id:"today",label:(0,Ze.__)("Today"),getValue:()=>(0,gt.getDate)(null)},{id:"yesterday",label:(0,Ze.__)("Yesterday"),getValue:()=>{let e=(0,gt.getDate)(null);return Do(e,1)}},{id:"past-week",label:(0,Ze.__)("Past week"),getValue:()=>{let e=(0,gt.getDate)(null);return Do(e,7)}},{id:"past-month",label:(0,Ze.__)("Past month"),getValue:()=>{let e=(0,gt.getDate)(null);return es(e,1)}}],pw=[{id:"last-7-days",label:(0,Ze.__)("Last 7 days"),getValue:()=>{let e=(0,gt.getDate)(null);return[Do(e,7),e]}},{id:"last-30-days",label:(0,Ze.__)("Last 30 days"),getValue:()=>{let e=(0,gt.getDate)(null);return[Do(e,30),e]}},{id:"month-to-date",label:(0,Ze.__)("Month to date"),getValue:()=>{let e=(0,gt.getDate)(null);return[Dp(e),e]}},{id:"last-year",label:(0,Ze.__)("Last year"),getValue:()=>{let e=(0,gt.getDate)(null);return[ts(e,1),e]}},{id:"year-to-date",label:(0,Ze.__)("Year to date"),getValue:()=>{let e=(0,gt.getDate)(null);return[Xa(e),e]}}],bn=e=>{if(!e)return null;let t=(0,gt.getDate)(e);return t&&cn(t)?t:null},xc=e=>e?typeof e=="string"?e:si(e,"yyyy-MM-dd"):"";function zv({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,ge.useState)(void 0),c=(0,ge.useCallback)(()=>{let f=Array.isArray(r)?r:[r];for(let m of f){let p=m.current;if(p&&!p.validity.valid){l({type:"invalid",message:p.validationMessage});return}}l(void 0)},[r]);return(0,ge.useEffect)(()=>{let f=Array.isArray(r)?r:[r],m=t?we(a,t):void 0;for(let p of f){let v=p.current;v&&v.setCustomValidity(m?.type==="invalid"&&m.message?m.message:"")}},[r,a,t]),(0,ge.useEffect)(()=>{let f=Array.isArray(r)?r:[r],m=p=>{p.preventDefault(),n(!0)};for(let p of f)p.current?.addEventListener("invalid",m);return()=>{for(let p of f)p.current?.removeEventListener("invalid",m)}},[r,n]),(0,ge.useEffect)(()=>{if(!o)return;let f=t?we(a,t):void 0;f?l(f):c()},[o,a,t,c]),(0,ye.jsxs)("div",{onBlur:f=>{o||(!f.relatedTarget||!f.currentTarget.contains(f.relatedTarget))&&n(!0)},children:[i,(0,ye.jsx)("div",{"aria-live":"polite",children:s&&(0,ye.jsxs)("p",{className:Y("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,ye.jsx)(ht.Icon,{className:"components-validated-control__indicator-icon",icon:xl,size:16,fill:"currentColor"}),s.message]})})]})}function vw({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:c,isValid:d,format:f}=t,[m,p]=(0,ge.useState)(null),v=f.weekStartsOn??(0,gt.getSettings)().l10n.startOfWeek,x=c({item:e}),_=typeof x=="string"?x:void 0,[y,w]=(0,ge.useState)(()=>bn(_)||new Date),[S,A]=(0,ge.useState)(!1),O=(0,ge.useRef)(null),R=(0,ge.useCallback)(V=>r(l({item:e,value:V})),[e,r,l]),N=(0,ge.useCallback)(V=>{let h=V?si(V,"yyyy-MM-dd"):void 0;R(h),p(null),A(!0)},[R]),E=(0,ge.useCallback)(V=>{let h=V.getValue(),g=xc(h);w(h),R(g),p(V.id),A(!0)},[R]),C=(0,ge.useCallback)(V=>{if(R(V),V){let h=bn(V);h&&w(h)}p(null),A(!0)},[R]),{timezone:{string:k}}=(0,gt.getSettings)(),M=s;return d?.required&&!n?M=`${s} (${(0,Ze.__)("Required")})`:!d?.required&&n&&(M=`${s} (${(0,Ze.__)("Optional")})`),(0,ye.jsx)(zv,{field:t,validity:i,inputRefs:O,isTouched:S,setIsTouched:A,children:(0,ye.jsx)(ht.BaseControl,{id:a,className:"dataviews-controls__date",label:M,hideLabelFromVision:o,children:(0,ye.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[mw.map(V=>{let h=m===V.id;return(0,ye.jsx)(ht.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:h,size:"small",onClick:()=>E(V),children:V.label},V.id)}),(0,ye.jsx)(ht.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Ze.__)("Custom")})]}),(0,ye.jsx)(ht.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:O,type:"date",label:(0,Ze.__)("Date"),hideLabelFromVision:!0,value:_,onChange:C,required:!!t.isValid?.required}),(0,ye.jsx)(dw,{style:{width:"100%"},selected:_&&bn(_)||void 0,onSelect:N,month:y,onMonthChange:w,timeZone:k||void 0,weekStartsOn:v})]})})})}function gw({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:c,format:d}=t,f,m=l({item:e});Array.isArray(m)&&m.length===2&&m.every(g=>typeof g=="string")&&(f=m);let p=d.weekStartsOn??(0,gt.getSettings)().l10n.startOfWeek,v=(0,ge.useCallback)(g=>{r(c({item:e,value:g}))},[e,r,c]),[x,_]=(0,ge.useState)(null),y=(0,ge.useMemo)(()=>{if(!f)return{from:void 0,to:void 0};let[g,T]=f;return{from:bn(g)||void 0,to:bn(T)||void 0}},[f]),[w,S]=(0,ge.useState)(()=>y.from||new Date),[A,O]=(0,ge.useState)(!1),R=(0,ge.useRef)(null),N=(0,ge.useRef)(null),E=(0,ge.useCallback)((g,T)=>{g&&T?v([xc(g),xc(T)]):!g&&!T&&v(void 0)},[v]),C=(0,ge.useCallback)(g=>{E(g?.from,g?.to),_(null),O(!0)},[E]),k=(0,ge.useCallback)(g=>{let[T,b]=g.getValue();S(T),E(T,b),_(g.id),O(!0)},[E]),M=(0,ge.useCallback)((g,T)=>{let[b,D]=f||[void 0,void 0];if(E(g==="from"?T:b,g==="to"?T:D),T){let G=bn(T);G&&S(G)}_(null),O(!0)},[f,E]),{timezone:V}=(0,gt.getSettings)(),h=s;return t.isValid?.required&&!n?h=`${s} (${(0,Ze.__)("Required")})`:!t.isValid?.required&&n&&(h=`${s} (${(0,Ze.__)("Optional")})`),(0,ye.jsx)(zv,{field:t,validity:i,inputRefs:[R,N],isTouched:A,setIsTouched:O,children:(0,ye.jsx)(ht.BaseControl,{id:a,className:"dataviews-controls__date",label:h,hideLabelFromVision:o,children:(0,ye.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ye.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[pw.map(g=>{let T=x===g.id;return(0,ye.jsx)(ht.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:T,size:"small",onClick:()=>k(g),children:g.label},g.id)}),(0,ye.jsx)(ht.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!x,size:"small",accessibleWhenDisabled:!1,disabled:!!x,children:(0,Ze.__)("Custom")})]}),(0,ye.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ye.jsx)(ht.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:R,type:"date",label:(0,Ze.__)("From"),hideLabelFromVision:!0,value:f?.[0],onChange:g=>M("from",g),required:!!t.isValid?.required}),(0,ye.jsx)(ht.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:N,type:"date",label:(0,Ze.__)("To"),hideLabelFromVision:!0,value:f?.[1],onChange:g=>M("to",g),required:!!t.isValid?.required})]}),(0,ye.jsx)(fw,{style:{width:"100%"},selected:y,onSelect:C,month:w,onMonthChange:S,timeZone:V.string||void 0,weekStartsOn:p})]})})})}function Wv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===xt||i===It?(0,ye.jsx)(us,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===_t?(0,ye.jsx)(gw,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ye.jsx)(vw,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ms=u(U(),1);var Gv=u(U(),1),qv=u(z(),1);var Yv=u(I(),1),{ValidatedInputControl:hw}=J(Gv.privateApis);function mr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:c,placeholder:d,description:f,getValue:m,setValue:p,isValid:v}=t,x=m({item:e}),_=(0,qv.useCallback)(y=>r(p({item:e,value:y})),[e,p,r]);return(0,Yv.jsx)(hw,{required:!!v.required,markWhenOptional:n,customValidity:we(v,l),label:c,placeholder:d,value:x??"",help:f,onChange:_,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:v.pattern?v.pattern.constraint:void 0,minLength:v.minLength?v.minLength.constraint:void 0,maxLength:v.maxLength?v.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var fs=u(I(),1);function Uv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,fs.jsx)(mr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,fs.jsx)(ms.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,fs.jsx)(ms.Icon,{icon:bl})})})}var vs=u(U(),1);var ps=u(I(),1);function $v({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ps.jsx)(mr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,ps.jsx)(vs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ps.jsx)(vs.Icon,{icon:kl})})})}var hs=u(U(),1);var gs=u(I(),1);function Kv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,gs.jsx)(mr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,gs.jsx)(hs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,gs.jsx)(hs.Icon,{icon:Vl})})})}var Rr=u(U(),1),pi=u(z(),1),bs=u(Z(),1);var co=u(I(),1),{ValidatedNumberControl:bw}=J(Rr.privateApis);function Zv(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function _w({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,pi.useCallback)(l=>t([Zv(l),i]),[t,i]),s=(0,pi.useCallback)(l=>t([n,Zv(l)]),[t,n]);return(0,co.jsx)(Rr.BaseControl,{help:(0,bs.__)("The max. value must be greater than the min. value."),children:(0,co.jsxs)(Rr.Flex,{direction:"row",gap:4,children:[(0,co.jsx)(Rr.__experimentalNumberControl,{label:(0,bs.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,co.jsx)(Rr.__experimentalNumberControl,{label:(0,bs.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function _s({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:c,description:d,getValue:f,setValue:m,isValid:p}=t,v=f({item:e})??"",x=(0,pi.useCallback)(y=>{r(m({item:e,value:["",void 0].includes(y)?void 0:Number(y)}))},[e,r,m]),_=(0,pi.useCallback)(y=>{r(m({item:e,value:y}))},[e,r,m]);if(i===_t){let y=["",""];return Array.isArray(v)&&v.length===2&&v.every(w=>typeof w=="number"||w==="")&&(y=v),(0,co.jsx)(_w,{value:y,onChange:_,hideLabelFromVision:o,step:l})}return(0,co.jsx)(bw,{required:!!p.required,markWhenOptional:n,customValidity:we(p,a),label:c,help:d,value:v,onChange:x,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var Xv=u(I(),1);function Qv(e){return(0,Xv.jsx)(_s,{...e})}var Jv=u(I(),1);function eg(e){return(0,Jv.jsx)(_s,{...e})}var xs=u(U(),1),tg=u(z(),1);var wc=u(I(),1),{ValidatedRadioControl:xw}=J(xs.privateApis);function rg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:d}=t,{elements:f,isLoading:m}=vt({elements:t.elements,getElements:t.getElements}),p=l({item:e}),v=(0,tg.useCallback)(x=>r(c({item:e,value:x})),[e,r,c]);return m?(0,wc.jsx)(xs.Spinner,{}):(0,wc.jsx)(xw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(d,i),label:a,help:s,onChange:v,options:f,selected:p,hideLabelFromVision:o})}var ws=u(U(),1),og=u(z(),1);var yc=u(I(),1),{ValidatedSelectControl:ww}=J(ws.privateApis);function ng({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:c,setValue:d,isValid:f}=t,m=a==="array",p=c({item:e})??(m?[]:""),v=(0,og.useCallback)(y=>r(d({item:e,value:y})),[e,r,d]),{elements:x,isLoading:_}=vt({elements:t.elements,getElements:t.getElements});return _?(0,yc.jsx)(ws.Spinner,{}):(0,yc.jsx)(ww,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(f,i),label:s,value:p,help:l,options:x,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var Sc=u(z(),1);var ig=u(I(),1);function ag({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,ig.jsx)(mr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,Sc.createElement)(s):void 0,suffix:l?(0,Sc.createElement)(l):void 0})}var sg=u(U(),1),lg=u(z(),1);var ug=u(I(),1),{ValidatedToggleControl:yw}=J(sg.privateApis);function cg({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:d}=e,f=(0,lg.useCallback)(()=>{t(c({item:r,value:!l({item:r})}))},[t,c,r,l]);return(0,ug.jsx)(yw,{required:!!d.required,markWhenOptional:n,customValidity:we(d,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:f})}var dg=u(U(),1),fg=u(z(),1);var mg=u(I(),1),{ValidatedTextareaControl:Sw}=J(dg.privateApis);function pg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:c,description:d,setValue:f,isValid:m}=t,p=t.getValue({item:e}),v=(0,fg.useCallback)(x=>r(f({item:e,value:x})),[e,r,f]);return(0,mg.jsx)(Sw,{required:!!m.required,markWhenOptional:n,customValidity:we(m,a),label:l,placeholder:c,value:p??"",help:d,onChange:v,rows:s,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var _n=u(U(),1),vg=u(z(),1);var ys=u(I(),1),{ValidatedToggleGroupControl:Cw}=J(_n.privateApis);function gg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,c=a({item:e}),d=(0,vg.useCallback)(v=>r(s({item:e,value:v})),[e,r,s]),{elements:f,isLoading:m}=vt({elements:t.elements,getElements:t.getElements});if(m)return(0,ys.jsx)(_n.Spinner,{});if(f.length===0)return null;let p=f.find(v=>v.value===c);return(0,ys.jsx)(Cw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:d,value:c,hideLabelFromVision:o,children:f.map(v=>(0,ys.jsx)(_n.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var Ss=u(U(),1),Cs=u(z(),1);var vi=u(I(),1),{ValidatedFormTokenField:Ew}=J(Ss.privateApis);function hg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:c,isValid:d}=t,f=l({item:e}),{elements:m,isLoading:p}=vt({elements:t.elements,getElements:t.getElements}),v=(0,Cs.useMemo)(()=>Array.isArray(f)?f.map(_=>m?.find(w=>w.value===_)||{value:_,label:_}):[],[f,m]),x=(0,Cs.useCallback)(_=>{let y=_.map(w=>typeof w=="object"&&"value"in w?w.value:w);r(c({item:e,value:y}))},[r,c,e]);return p?(0,vi.jsx)(Ss.Spinner,{}):(0,vi.jsx)(Ew,{required:!!d?.required,markWhenOptional:n,customValidity:we(d,i),label:o?void 0:a,value:v,onChange:x,placeholder:s,suggestions:m?.map(_=>_.value),__experimentalValidateInput:_=>t.isValid?.elements&&m?m.some(y=>y.value===_||y.label===_):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:_=>typeof _=="object"&&"label"in _?_.label:typeof _=="string"&&m&&m.find(w=>w.value===_)?.label||_,__experimentalRenderItem:({item:_})=>{if(typeof _=="string"&&m){let y=m.find(w=>w.value===_);return(0,vi.jsx)("span",{children:y?.label||_})}return(0,vi.jsx)("span",{children:_})}})}var Pw={grad:.9,turn:360,rad:360/(2*Math.PI)},kr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},rt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Pg=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},bg=function(e){return{r:Yt(e.r,0,255),g:Yt(e.g,0,255),b:Yt(e.b,0,255),a:Yt(e.a)}},Cc=function(e){return{r:rt(e.r),g:rt(e.g),b:rt(e.b),a:rt(e.a,3)}},Ow=/^#([0-9a-f]{3,8})$/i,Es=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Og=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},Tg=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),c=i%6;return{r:255*[o,s,a,a,l,o][c],g:255*[l,o,o,s,a,a][c],b:255*[a,a,l,o,o,s][c],a:n}},_g=function(e){return{h:Pg(e.h),s:Yt(e.s,0,100),l:Yt(e.l,0,100),a:Yt(e.a)}},xg=function(e){return{h:rt(e.h),s:rt(e.s),l:rt(e.l),a:rt(e.a,3)}},wg=function(e){return Tg((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},gi=function(e){return{h:(t=Og(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},Tw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Aw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Iw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Vw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,yg={string:[[function(e){var t=Ow.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?rt(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?rt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Iw.exec(e)||Vw.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:bg({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=Tw.exec(e)||Aw.exec(e);if(!t)return null;var r,o,n=_g({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(Pw[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return wg(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return kr(t)&&kr(r)&&kr(o)?bg({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!kr(t)||!kr(r)||!kr(o))return null;var a=_g({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return wg(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!kr(t)||!kr(r)||!kr(o))return null;var a=(function(s){return{h:Pg(s.h),s:Yt(s.s,0,100),v:Yt(s.v,0,100),a:Yt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return Tg(a)},"hsv"]]},Sg=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Cc(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?Es(rt(255*i)):"","#"+Es(r)+Es(o)+Es(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return Cc(this.rgba)},e.prototype.toRgbString=function(){return t=Cc(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return xg(gi(this.rgba))},e.prototype.toHslString=function(){return t=xg(gi(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=Og(this.rgba),{h:rt(t.h),s:rt(t.s),v:rt(t.v),a:rt(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(Ec(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),lt(Ec(this.rgba,-t))},e.prototype.grayscale=function(){return lt(Ec(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),lt(Cg(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),lt(Cg(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}):rt(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=gi(this.rgba);return typeof t=="number"?lt({h:t,s:r.s,l:r.l,a:r.a}):rt(r.h)},e.prototype.isEqual=function(t){return this.toHex()===lt(t).toHex()},e})(),lt=function(e){return e instanceof Eg?e:new Eg(e)};var xn=u(U(),1),Oc=u(z(),1);var fo=u(I(),1),{ValidatedInputControl:kw,Picker:Dw}=J(xn.privateApis),Nw=({color:e,onColorChange:t})=>{let r=e&<(e).isValid()?e:"#ffffff";return(0,fo.jsx)(xn.Dropdown,{renderToggle:({onToggle:o,isOpen:n})=>(0,fo.jsx)(xn.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,fo.jsx)("button",{type:"button",onClick:o,style:{width:"24px",height:"24px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",cursor:"pointer",outline:n?"2px solid #007cba":"none",outlineOffset:"2px",display:"flex",alignItems:"center",justifyContent:"center",padding:0,margin:0},"aria-label":"Open color picker"})}),renderContent:()=>(0,fo.jsx)("div",{style:{padding:"16px"},children:(0,fo.jsx)(Dw,{color:lt(r),onChange:t,enableAlpha:!0})})})};function Ag({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:c,isValid:d}=t,f=t.getValue({item:e})||"",m=(0,Oc.useCallback)(v=>{r(c({item:e,value:v.toHex()}))},[e,r,c]),p=(0,Oc.useCallback)(v=>{r(c({item:e,value:v||""}))},[e,r,c]);return(0,fo.jsx)(kw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:we(d,i),label:a,placeholder:s,value:f,help:l,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,fo.jsx)(Nw,{color:f,onColorChange:m})})}var Os=u(U(),1),Ts=u(z(),1),Tc=u(Z(),1);var Ps=u(I(),1);function Ig({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,Ts.useState)(!1),l=(0,Ts.useCallback)(()=>{s(c=>!c)},[]);return(0,Ps.jsx)(mr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,Ps.jsx)(Os.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,Ps.jsx)(Os.Button,{icon:a?kn:zl,onClick:l,size:"small",label:a?(0,Tc.__)("Hide password"):(0,Tc.__)("Show password")})})})}function As(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var Rg=u(I(),1),Vg={array:hg,checkbox:Fv,color:Ag,combobox:jv,datetime:Hv,date:Wv,email:Uv,telephone:$v,url:Kv,integer:Qv,number:eg,password:Ig,radio:rg,select:ng,text:ag,toggle:cg,textarea:pg,toggleGroup:gg};function Mw(e){return e&&typeof e=="object"&&typeof e.control=="string"}function Fw(e){let{control:t,...r}=e,o=Is(t);return o===null?null:function(i){return(0,Rg.jsx)(o,{...i,config:r})}}function kg(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?Is(e.Edit):Mw(e.Edit)?Fw(e.Edit):As(e)&&e.type!=="array"?Is("select"):t===null?null:Is(t)}function Is(e){return Object.keys(Vg).includes(e)?Vg[e]:null}function Lw(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var Dg=Lw;var jw=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Ng=jw;var Bw=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},Mg=Bw;var Lg=u(Z(),1);function Vs({item:e,field:t}){let{elements:r,isLoading:o}=vt({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var Fg=u(I(),1);function Le({item:e,field:t}){return t.hasElements?(0,Fg.jsx)(Vs,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var pr=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function je(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function vr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function gr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function hr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Ee(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function Hw({item:e,field:t}){return t.getValue({item:e})}var Ot=Hw;var zw=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function Ww(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!zw.test(r)?(0,Lg.__)("Value must be a valid email address."):null}var jg={type:"email",render:Le,Edit:"email",sort:pr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Ve,Re,Jt,er,tr,Te,Ae,dt,ft],format:{},getValueFormatted:Ot,validate:{required:je,pattern:hr,minLength:vr,maxLength:gr,elements:Ee,custom:Ww}};var Bg=u(Z(),1);var wn=(e,t,r)=>r==="asc"?e-t:t-e;function Rs(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function ks(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var Hg={separatorThousand:","};function Gw({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=Hg:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function qw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Bg.__)("Value must be an integer."):null}var zg={type:"integer",render:Le,Edit:"integer",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re,Lr,jr,Br,Hr,_t],validOperators:[Ve,Re,Lr,jr,Br,Hr,_t,Te,Ae,dt,ft],format:Hg,getValueFormatted:Gw,validate:{required:je,min:Rs,max:ks,elements:Ee,custom:qw}};var Wg=u(Z(),1);var Gg={separatorThousand:",",separatorDecimal:".",decimals:2};function Yw({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=Gg:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,c]=s.split("."),d=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?d:d+i+c}function Uw(e){return e===""||e===void 0||e===null}function $w(e,t){let r=t.getValue({item:e});return!Uw(r)&&!Number.isFinite(r)?(0,Wg.__)("Value must be a number."):null}var qg={type:"number",render:Le,Edit:"number",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re,Lr,jr,Br,Hr,_t],validOperators:[Ve,Re,Lr,jr,Br,Hr,_t,Te,Ae,dt,ft],format:Gg,getValueFormatted:Yw,validate:{required:je,min:Rs,max:ks,elements:Ee,custom:$w}};var Yg={type:"text",render:Le,Edit:"text",sort:pr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Ve,Re,Jt,er,tr,Te,Ae,dt,ft],format:{},getValueFormatted:Ot,validate:{required:je,pattern:hr,minLength:vr,maxLength:gr,elements:Ee}};var Fo=u(No(),1);var Ug={datetime:(0,Fo.getSettings)().formats.datetime,weekStartsOn:(0,Fo.getSettings)().l10n.startOfWeek};function Kw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=Ug:o=t.format,(0,Fo.dateI18n)(o.datetime,(0,Fo.getDate)(r))}var Zw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},$g={type:"datetime",render:Le,Edit:"datetime",sort:Zw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Yr,Ur,zr,Wr,Gr,qr,xt,It],validOperators:[Yr,Ur,zr,Wr,Gr,qr,xt,It],format:Ug,getValueFormatted:Kw,validate:{required:je,elements:Ee}};var Lo=u(No(),1);var Kg={date:(0,Lo.getSettings)().formats.date,weekStartsOn:(0,Lo.getSettings)().l10n.startOfWeek};function Xw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Kg:o=t.format,(0,Lo.dateI18n)(o.date,(0,Lo.getDate)(r))}var Qw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Zg={type:"date",render:Le,Edit:"date",sort:Qw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Yr,Ur,zr,Wr,Gr,qr,xt,It,_t],validOperators:[Yr,Ur,zr,Wr,Gr,qr,xt,It,_t],format:Kg,getValueFormatted:Xw,validate:{required:je,elements:Ee}};var Ds=u(Z(),1);function Xg(e,t){return t.getValue({item:e})===!0}function Jw({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,Ds.__)("True"):r===!1?(0,Ds.__)("False"):""}function ey(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,Ds.__)("Value must be true, false, or undefined"):null}var ty=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},Qg={type:"boolean",render:Le,Edit:"checkbox",sort:ty,validate:{required:Xg,elements:Ee,custom:ey},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:[Ve,Re],format:{},getValueFormatted:Jw};var Jg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Ot,validate:{}};var Ac=u(Z(),1);function eh(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function th({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function ry({item:e,field:t}){return th({item:e,field:t})}function oy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,Ac.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,Ac.__)("Every value must be a string.")}var ny=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},rh={type:"array",render:ry,Edit:"array",sort:ny,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Te,Ae,dt,ft],format:{},getValueFormatted:th,validate:{required:eh,elements:Ee,custom:oy}};function iy({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var oh={type:"password",render:Le,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:iy,validate:{required:je,pattern:hr,minLength:vr,maxLength:gr,elements:Ee}};var nh={type:"telephone",render:Le,Edit:"telephone",sort:pr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Ve,Re,Jt,er,tr,Te,Ae,dt,ft],format:{},getValueFormatted:Ot,validate:{required:je,pattern:hr,minLength:vr,maxLength:gr,elements:Ee}};var ih=u(Z(),1);var yn=u(I(),1);function ay({item:e,field:t}){if(t.hasElements)return(0,yn.jsx)(Vs,{item:e,field:t});let r=Ot({item:e,field:t});return!r||!lt(r).isValid()?r:(0,yn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,yn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,yn.jsx)("span",{children:r})]})}function sy(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!lt(r).isValid()?(0,ih.__)("Value must be a valid color."):null}var ly=(e,t,r)=>{let o=lt(e),n=lt(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},ah={type:"color",render:ay,Edit:"color",sort:ly,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Ve,Re,Te,Ae],format:{},getValueFormatted:Ot,validate:{required:je,elements:Ee,custom:sy}};var sh={type:"url",render:Le,Edit:"url",sort:pr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Te,Ae],validOperators:[Ve,Re,Jt,er,tr,Te,Ae,dt,ft],format:{},getValueFormatted:Ot,validate:{required:je,pattern:hr,minLength:vr,maxLength:gr,elements:Ee}};var uy=(e,t,r)=>typeof e=="number"&&typeof t=="number"?wn(e,t,r):pr(e,t,r),lh={render:Le,Edit:null,sort:uy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ve,Re],validOperators:ov(),format:{},getValueFormatted:Ot,validate:{required:je,elements:Ee}};function uh(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let c=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:c}}function ch(e){return e.validOperators.reduce((t,r)=>{let o=Mo(r);return o?.filter&&(t[r]=o.filter),t},{})}function cy(e,t){return{...t.format,...e.format}}var dh=cy;function dy(e){let t=[jg,zg,qg,Yg,$g,Zg,Qg,Jg,rh,oh,nh,ah,sh].find(r=>r?.type===e);return t||lh}function fh(e){return e.map(t=>{let r=dy(t.type),o=t.getValue||Ng(t.id),n=function(i,a,s){let l=o({item:i}),c=o({item:a});return t.sort?t.sort(l,c,s):r.sort(l,c,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||Mg(t.id),elements:t.elements,getElements:t.getElements,hasElements:As(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:kg(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:uh(t,r),filterBy:Dg(t,r.defaultOperators,r.validOperators),filter:ch(r),format:dh(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var ut=u(I(),1),fy=e=>e.id,my=()=>!0,py=[],vy=Jr.filter(e=>!e.isPicker);function gy({header:e,search:t=!0,searchLabel:r=void 0}){return(0,ut.jsxs)(ut.Fragment,{children:[(0,ut.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,ut.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,ut.jsx)(fc,{label:r}),(0,ut.jsx)(as,{})]}),(0,ut.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,ut.jsx)(kv,{}),e]})]}),(0,ut.jsx)(ss,{className:"dataviews-filters__container"}),(0,ut.jsx)(cc,{}),(0,ut.jsx)(dc,{})]})}function hy({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=py,data:a,getItemId:s=fy,getItemLevel:l,isLoading:c=!1,paginationInfo:d,defaultLayouts:f,selection:m,onChangeSelection:p,onClickItem:v,renderItemLink:x,isItemClickable:_=my,header:y,children:w,config:S={perPageSizes:[10,20,50,100]},empty:A}){let{infiniteScrollHandler:O}=d,R=(0,Tt.useRef)(null),[N,E]=(0,Tt.useState)(0),C=(0,Ns.useResizeObserver)(fe=>{E(fe[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[k,M]=(0,Tt.useState)([]),V=m===void 0||p===void 0,h=V?k:m,[g,T]=(0,Tt.useState)(null);function b(fe){let Oe=typeof fe=="function"?fe(h):fe;V&&M(Oe),p&&p(Oe)}let D=(0,Tt.useMemo)(()=>fh(r),[r]),B=(0,Tt.useMemo)(()=>h.filter(fe=>a.some(Oe=>s(Oe)===fe)),[h,a,s]),P=ui(D,e),G=(0,Tt.useMemo)(()=>(P||[]).some(fe=>fe.isPrimary||fe.isLocked),[P]),[K,Qe]=(0,Tt.useState)(G);(0,Tt.useEffect)(()=>{G&&!K&&Qe(!0)},[G,K]),(0,Tt.useEffect)(()=>{if(!e.infiniteScrollEnabled||!R.current)return;let fe=(0,Ns.throttle)(q=>{let Ie=q.target,Je=Ie.scrollTop,Ut=Ie.scrollHeight,Nr=Ie.clientHeight;Je+Nr>=Ut-100&&O?.()},100),Oe=R.current;return Oe.addEventListener("scroll",fe),()=>{Oe.removeEventListener("scroll",fe),fe.cancel()}},[O,e.infiniteScrollEnabled]);let ot=(0,Tt.useMemo)(()=>Object.fromEntries(Object.entries(f).filter(([fe])=>vy.some(Oe=>Oe.type===fe))),[f]);return ot[e.type]?(0,ut.jsx)($.Provider,{value:{view:e,onChangeView:t,fields:D,actions:i,data:a,isLoading:c,paginationInfo:d,selection:B,onChangeSelection:b,openedFilter:g,setOpenedFilter:T,getItemId:s,getItemLevel:l,isItemClickable:_,onClickItem:v,renderItemLink:x,containerWidth:N,containerRef:R,resizeObserverRef:C,defaultLayouts:ot,filters:P,isShowingFilter:K,setIsShowingFilter:Qe,config:S,empty:A,hasInfiniteScrollHandler:!!O},children:(0,ut.jsx)("div",{className:"dataviews-wrapper",ref:R,children:w??(0,ut.jsx)(gy,{header:y,search:o,searchLabel:n})})}):null}var Xt=hy;Xt.BulkActionToolbar=ca;Xt.Filters=di;Xt.FiltersToggled=ss;Xt.FiltersToggle=as;Xt.Layout=cc;Xt.LayoutSwitcher=vc;Xt.Pagination=mu;Xt.Search=fc;Xt.ViewConfig=gc;Xt.Footer=dc;var Ic=Xt;var mh=u(z(),1),ph=u(I(),1),vh=(0,mh.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},i)=>(0,ph.jsx)(o,{ref:i,className:Y("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));vh.displayName="NavigableRegion";var gh=vh;var mo=u(U(),1);var hh=u(U(),1),{Fill:bh,Slot:_h}=(0,hh.createSlotFill)("SidebarToggle");var Dr=u(I(),1);function xh({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Dr.jsxs)(mo.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Dr.jsxs)(mo.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Dr.jsxs)(mo.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Dr.jsx)(_h,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Dr.jsx)(mo.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,Dr.jsx)(mo.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Dr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var hi=u(I(),1);function wh({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:s=!1,showSidebarToggle:l=!0}){let c=Y("admin-ui-page",i);return(0,hi.jsxs)(gh,{className:c,ariaLabel:r,children:[(r||e||t)&&(0,hi.jsx)(xh,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:l}),s?(0,hi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}wh.SidebarToggleFill=bh;var Vc=wh;var bi=u(Ms()),_i=u(U()),Dc=u($t()),Qt=u(z()),Xh=u(Ch()),Qh=u(Z());var Sn=function(){return Sn=Object.assign||function(t){for(var r,o=1,n=arguments.length;o(0,Dh.useSelect)(e=>e(Nh.store).getEntityRecords("postType","wp_template_part",{per_page:-1}),[])??[],Fh=(e,t)=>{let r=e.toLowerCase(),o=t.map(i=>i.title.rendered.toLowerCase());if(!o.includes(r))return e;let n=2;for(;o.includes(`${r} ${n}`);)n++;return`${e} ${n}`},Lh=e=>kh(e).replace(/[^\w-]+/g,"")||"wp-custom-part";var Xe=u(I(),1);function jh(e,t){return`fields-create-template-part-modal__area-option-${e}-${t}`}function Bh(e,t){return`fields-create-template-part-modal__area-option-description-${e}-${t}`}function js({modalTitle:e,...t}){let r=(0,En.useSelect)(o=>o(Ls.store).getPostType("wp_template_part")?.labels?.add_new_item,[]);return(0,Xe.jsx)(bt.Modal,{title:e||r,onRequestClose:t.closeModal,overlayClassName:"fields-create-template-part-modal",focusOnMount:"firstContentElement",size:"medium",children:(0,Xe.jsx)(wy,{...t})})}var xy=e=>e==="header"?Al:e==="footer"?yl:e==="sidebar"?Gl:e==="overlay"?ta:e==="menu"?ta:Yl;function wy({defaultArea:e="uncategorized",blocks:t=[],confirmLabel:r=(0,Cn.__)("Add"),closeModal:o,onCreate:n,onError:i,defaultTitle:a=""}){let{createErrorNotice:s}=(0,En.useDispatch)(zh.store),{saveEntityRecord:l}=(0,En.useDispatch)(Ls.store),c=Mh(),[d,f]=(0,Fs.useState)(a),[m,p]=(0,Fs.useState)(e),[v,x]=(0,Fs.useState)(!1),_=(0,Hh.useInstanceId)(js),y=(0,En.useSelect)(S=>S(Ls.store).getCurrentTheme()?.default_template_part_areas,[]);async function w(){if(!(!d||v))try{x(!0);let S=Fh(d,c),A=Lh(S),O=await l("postType","wp_template_part",{slug:A,title:S,content:(0,Wh.serialize)(t),area:m},{throwOnError:!0});await n(O)}catch(S){let A=S instanceof Error&&"code"in S&&S.message&&S.code!=="unknown_error"?S.message:(0,Cn.__)("An error occurred while creating the template part.");s(A,{type:"snackbar"}),i?.()}finally{x(!1)}}return(0,Xe.jsx)("form",{onSubmit:async S=>{S.preventDefault(),await w()},children:(0,Xe.jsxs)(bt.__experimentalVStack,{spacing:"4",children:[(0,Xe.jsx)(bt.TextControl,{__next40pxDefaultSize:!0,label:(0,Cn.__)("Name"),value:d,onChange:f,required:!0}),(0,Xe.jsxs)("fieldset",{className:"fields-create-template-part-modal__area-fieldset",children:[(0,Xe.jsx)(bt.BaseControl.VisualLabel,{as:"legend",children:(0,Cn.__)("Area")}),(0,Xe.jsx)("div",{className:"fields-create-template-part-modal__area-radio-group",children:(y??[]).map(S=>{let A=xy(S.icon);return(0,Xe.jsxs)("div",{className:"fields-create-template-part-modal__area-radio-wrapper",children:[(0,Xe.jsx)("input",{type:"radio",id:jh(S.area,_),name:`fields-create-template-part-modal__area-${_}`,value:S.area,checked:m===S.area,onChange:()=>{p(S.area)},"aria-describedby":Bh(S.area,_)}),(0,Xe.jsx)(bt.Icon,{icon:A,className:"fields-create-template-part-modal__area-radio-icon"}),(0,Xe.jsx)("label",{htmlFor:jh(S.area,_),className:"fields-create-template-part-modal__area-radio-label",children:S.label}),(0,Xe.jsx)(bt.Icon,{icon:go,className:"fields-create-template-part-modal__area-radio-checkmark"}),(0,Xe.jsx)("p",{className:"fields-create-template-part-modal__area-radio-description",id:Bh(S.area,_),children:S.description})]},S.area)})})]}),(0,Xe.jsxs)(bt.__experimentalHStack,{justify:"right",children:[(0,Xe.jsx)(bt.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:()=>{o()},children:(0,Cn.__)("Cancel")}),(0,Xe.jsx)(bt.Button,{__next40pxDefaultSize:!0,variant:"primary",type:"submit","aria-disabled":!d||v,isBusy:v,children:r})]})]})})}var Gh=u(Kl()),{lock:ZF,unlock:Bs}=(0,Gh.__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 yy="navigation-overlay",qh={type:"grid",sort:{field:"date",direction:"desc"},fields:[],titleField:"title",mediaField:"preview"},Yh={table:{},grid:{},list:{}},Rc=[{slug:"all",label:"All Template Parts"},{slug:"header",label:"Headers"},{slug:"footer",label:"Footers"},{slug:"sidebar",label:"Sidebars"},{slug:yy,label:"Overlays"},{slug:"uncategorized",label:"General"}];function Uh(e){return e==="all"?{}:{filters:[{field:"area",operator:"is",value:e}]}}function $h(e){let t={};e.perPage!==void 0&&(t.per_page=e.perPage),e.page!==void 0&&(t.page=e.page),[void 0,""].includes(e.search)||(t.search=e.search),e.sort?.field!==void 0&&(t.orderby=e.sort.field),e.sort?.direction!==void 0&&(t.order=e.sort.direction);let r=e.filters?.find(o=>o.field==="area");return r&&(t.area=r.value),t}var Kh=u(Z());import{Preview as Sy}from"@wordpress/lazy-editor";function Cy({item:e}){let t=e.description;return React.createElement(Sy,{content:e?.content?.raw,blocks:e?.blocks,description:t})}var Zh={label:(0,Kh.__)("Preview"),id:"preview",render:Cy,enableSorting:!1};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4027627b27']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4027627b27"),e.appendChild(document.createTextNode(':root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.fields-create-template-part-modal{z-index:1000001}.fields-create-template-part-modal__area-fieldset{border:0;margin:0;padding:0}.fields-create-template-part-modal__area-radio-group{border:1px solid #949494;border-radius:2px}.fields-create-template-part-modal__area-radio-wrapper{grid-gap:4px 8px;align-items:center;color:#1e1e1e;display:grid;grid-template-columns:min-content 1fr min-content;padding:12px;position:relative}.fields-create-template-part-modal__area-radio-wrapper+.fields-create-template-part-modal__area-radio-wrapper{border-top:1px solid #949494}.fields-create-template-part-modal__area-radio-wrapper input[type=radio]{opacity:0;position:absolute}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:checked){z-index:1}.fields-create-template-part-modal__area-radio-wrapper:has(input[type=radio]:not(:checked)):hover{color:var(--wp-admin-theme-color)}.fields-create-template-part-modal__area-radio-wrapper>:not(.fields-create-template-part-modal__area-radio-label){pointer-events:none}.fields-create-template-part-modal__area-radio-label:before{content:"";inset:0;position:absolute}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-label:before{cursor:pointer}input[type=radio]:focus-visible~.fields-create-template-part-modal__area-radio-label:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:4px solid #0000}.fields-create-template-part-modal__area-radio-checkmark,.fields-create-template-part-modal__area-radio-icon{fill:currentColor}input[type=radio]:not(:checked)~.fields-create-template-part-modal__area-radio-checkmark{opacity:0}.fields-create-template-part-modal__area-radio-description{text-wrap:pretty;color:#757575;font-size:12px;grid-column:2/3;line-height:normal;margin:0}input[type=radio]:not(:checked):hover~.fields-create-template-part-modal__area-radio-description{color:inherit}fieldset.fields__media-edit{border:0;container-type:inline-size;margin:0;padding:0;width:100%}fieldset.fields__media-edit .fields__media-edit-compact{align-items:center;display:grid;gap:8px;grid-template-columns:1fr auto}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-compact .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-picker-button:has(.fields__media-edit-placeholder):not(.fields__media-edit-expanded *) .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-picker-button{align-items:center;border:1px dashed #949494;border-radius:1px;cursor:pointer;display:flex;gap:12px;min-width:0;padding:7px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{background-color:#f0f0f0}fieldset.fields__media-edit .fields__media-edit-picker-button:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}fieldset.fields__media-edit .fields__media-edit-picker-button[aria-disabled=true]{cursor:default;opacity:.6}fieldset.fields__media-edit .fields__media-edit-picker-button .fields__media-edit-picker-button-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-filename,fieldset.fields__media-edit .fields__media-edit-placeholder{flex:1;min-width:0;width:100%}fieldset.fields__media-edit .fields__media-edit-placeholder{text-align:center}fieldset.fields__media-edit .fields__media-edit-thumbnail{aspect-ratio:1/1;border-radius:2px;flex-shrink:0;width:24px}fieldset.fields__media-edit .fields__media-edit-expanded{display:grid;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner{align-items:center;display:flex;gap:8px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .components-drop-zone .components-drop-zone__content-inner .components-drop-zone__content-icon{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview{align-items:center;aspect-ratio:3/2;border-radius:2px;display:flex;justify-content:center;overflow:hidden;padding:4px;position:relative;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-preview .fields__media-edit-expanded-preview-stack{height:100%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}@media not (prefers-reduced-motion){fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay{transition:opacity 50ms ease-out}}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-overlay *{pointer-events:auto}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-remove{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;position:absolute;right:8px;top:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-title{backdrop-filter:blur(16px) saturate(180%);background:#ffffffbf;border-radius:1px;bottom:0;left:0;margin:8px;padding:4px;position:absolute;right:0;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:focus-within .fields__media-edit-expanded-overlay,fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:hover .fields__media-edit-expanded-overlay{opacity:1}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item:not(.has-preview-image) .fields__media-edit-expanded-preview-stack{padding:8px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-thumbnail{height:100%;object-fit:cover;object-position:50% 50%;width:100%}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-filename{flex:none;text-align:center}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-picker-button-spinner svg{margin:0}fieldset.fields__media-edit .fields__media-edit-expanded.is-single{grid-template-columns:1fr}fieldset.fields__media-edit .fields__media-edit-expanded.is-single .fields__media-edit-expanded-preview{aspect-ratio:2/1}fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(3,1fr)}@container (max-width: 768px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:repeat(2,1fr)}}@container (max-width: 280px){fieldset.fields__media-edit .fields__media-edit-expanded.is-multiple:not(.is-empty){grid-template-columns:1fr}}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-picker-button{padding:0}fieldset.fields__media-edit .fields__media-edit-expanded:not(.is-empty) .fields__media-edit-placeholder{align-items:center;aspect-ratio:3/2;display:flex;justify-content:center}.fields-controls__slug{border:0;margin:0;padding:0}.fields-controls__slug .fields-controls__slug-external-icon{margin-left:5ch}.fields-controls__slug .fields-controls__slug-input input.components-input-control__input{padding-inline-start:0!important}.fields-controls__slug .fields-controls__slug-help-link{word-break:break-word}.fields-controls__slug .fields-controls__slug-help{display:flex;flex-direction:column}.fields-controls__slug .fields-controls__slug-help .fields-controls__slug-help-slug{font-weight:600}.fields-controls__featured-image-image,.fields-controls__featured-image-placeholder{border-radius:4px;display:block;height:100%;width:100%}.fields-controls__featured-image-placeholder{background:#f0f0f0;box-shadow:none}.fields-controls__parent,.fields-controls__password,.fields-controls__template{border:0;margin:0;padding:0}.fields-controls__template-modal{z-index:1000001}.fields-controls__template-content .block-editor-block-patterns-list{column-count:2;column-gap:24px;padding-top:2px}@media (min-width:782px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:3}}@media (min-width:1280px){.fields-controls__template-content .block-editor-block-patterns-list{column-count:4}}.fields-controls__template-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.fields-field__title>span:first-child{display:block;flex-grow:0;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.fields-field__pattern-title span:first-child{flex:1}.routes-template-part-list__tabs-wrapper{border-bottom:1px solid #f0f0f0;padding:0 24px}')),document.head.appendChild(e)}var{useEntityRecordsWithPermissions:Iy}=Bs(bi.privateApis),{usePostActions:Vy,usePostFields:Ry}=Bs(Xh.privateApis),{Tabs:kc}=Bs(_i.privateApis);function ky(e){return e.id.toString()}function Dy(){let e=Ay(),{area:t="all"}=Ey({from:"/template-parts/list/$area"}),r=Py(),o=Oy({from:"/template-parts/list/$area"}),n=(0,Dc.useSelect)(g=>g(bi.store).getPostType("wp_template_part"),[]),i=n?.labels,a=(0,Dc.useSelect)(g=>g(bi.store).canUser("create",{kind:"postType",name:"wp_template_part"}),[]),[s,l]=(0,Qt.useState)(!1),c=qh,d=(0,Qt.useMemo)(()=>Uh(t),[t]),f=(0,Qt.useCallback)(g=>{r({search:{...o,...g}})},[o,r]),{view:m,isModified:p,updateView:v,resetToDefault:x}=$s({kind:"postType",name:"wp_template_part",slug:"default-new",defaultView:c,activeViewOverrides:d,queryParams:o,onChangeQueryParams:f}),_=()=>{x(),e()},y=g=>{v(g),g.type!==m.type&&e()},w=(0,Qt.useMemo)(()=>$h(m),[m]),{records:S,totalItems:A,totalPages:O,isResolving:R}=Iy("postType","wp_template_part",w),N=Ry({postType:"wp_template_part"}),E=(0,Qt.useMemo)(()=>[Zh].concat(N.filter(g=>!(g.id==="area"&&t!=="all"||g.id==="status")).map(g=>g.id==="area"?{...g,filterBy:!1}:g)),[N,t]),C=(0,Qt.useCallback)(g=>{let T=g.map(B=>B.id.toString()),b=o.postIds||[],D=b.filter(B=>!T.includes(B));D.length!==b.length?r({search:{...o,postIds:D.length>0?D:void 0}}):e()},[e,o,r]),k=Vy({postType:"wp_template_part",context:"list",onActionPerformed:(g,T)=>{(g==="move-to-trash"||g==="permanently-delete")&&C(T)}}),M=(0,Qt.useMemo)(()=>[...k?.flatMap(g=>g.id==="view-post-revisions"?[]:[g])],[k]),V=(0,Qt.useCallback)(g=>{r({to:`/template-parts/list/${g}`})},[r]);if(!n)return null;let h=o.postIds??[];return m.type==="list"&&h.length===0&&S?.length>0&&h.push(S[0].id.toString()),m.type==="list"&&h.splice(1),React.createElement(Vc,{title:n.labels?.name,subTitle:n.labels?.description,className:"template-part-page",actions:React.createElement(React.Fragment,null,p&&React.createElement(_i.Button,{variant:"tertiary",size:"compact",onClick:_},(0,Qh.__)("Reset view")),i?.add_new_item&&a&&React.createElement(_i.Button,{variant:"primary",onClick:()=>l(!0),size:"compact"},i.add_new_item)),hasPadding:!1},Rc.length>1&&React.createElement("div",{className:"routes-template-part-list__tabs-wrapper"},React.createElement(kc,{onSelect:V,selectedTabId:t??"all"},React.createElement(kc.TabList,null,Rc.map(g=>React.createElement(kc.Tab,{tabId:g.slug,key:g.slug},g.label))))),React.createElement(Ic,{data:S,fields:E,view:m,onChangeView:y,actions:M,isLoading:R,paginationInfo:{totalItems:A,totalPages:O},defaultLayouts:Yh,getItemId:ky,selection:h,onChangeSelection:g=>{r({search:{...o,postIds:g.length>0?g:void 0,edit:g.length===0?void 0:o.edit}})},renderItemLink:({item:g,...T})=>React.createElement(Ty,{to:`/types/wp_template_part/edit/${encodeURIComponent(g.id)}`,...T,onClick:b=>{b.stopPropagation()}})}),s&&React.createElement(js,{closeModal:()=>l(!1),blocks:[],onCreate:g=>{l(!1),r({to:`/types/wp_template_part/edit/${encodeURIComponent(g.id)}`})},onError:()=>l(!1),defaultArea:t!=="all"?t:"uncategorized"}))}var Ny=Dy;export{Ny 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. + *) +*/ diff --git a/src/wp-includes/build/routes/template-part-list/route.js b/src/wp-includes/build/routes/template-part-list/route.js new file mode 100644 index 0000000000000..5d5b21c9a3db3 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/route.js @@ -0,0 +1,237 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// package-external:@wordpress/data +var require_data = __commonJS({ + "package-external:@wordpress/data"(exports, module) { + module.exports = window.wp.data; + } +}); + +// package-external:@wordpress/core-data +var require_core_data = __commonJS({ + "package-external:@wordpress/core-data"(exports, module) { + module.exports = window.wp.coreData; + } +}); + +// package-external:@wordpress/i18n +var require_i18n = __commonJS({ + "package-external:@wordpress/i18n"(exports, module) { + module.exports = window.wp.i18n; + } +}); + +// package-external:@wordpress/element +var require_element = __commonJS({ + "package-external:@wordpress/element"(exports, module) { + module.exports = window.wp.element; + } +}); + +// package-external:@wordpress/preferences +var require_preferences = __commonJS({ + "package-external:@wordpress/preferences"(exports, module) { + module.exports = window.wp.preferences; + } +}); + +// routes/template-part-list/route.ts +var import_data3 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_i18n = __toESM(require_i18n()); + +// packages/views/build-module/use-view.mjs +var import_element = __toESM(require_element(), 1); +var import_data = __toESM(require_data(), 1); +var import_preferences = __toESM(require_preferences(), 1); + +// packages/views/build-module/preference-keys.mjs +function generatePreferenceKey(kind, name, slug) { + return `dataviews-${kind}-${name}-${slug}`; +} + +// packages/views/build-module/filter-utils.mjs +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { + const activeFields = new Set( + activeViewOverrides.filters.map((f) => f.field) + ); + const preserved = (view.filters ?? []).filter( + (f) => !activeFields.has(f.field) + ); + result = { + ...result, + filters: [...preserved, ...activeViewOverrides.filters] + }; + } + if (activeViewOverrides.sort) { + const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; + if (isDefaultSort) { + result = { + ...result, + sort: activeViewOverrides.sort + }; + } + } + return result; +} + +// packages/views/build-module/load-view.mjs +var import_data2 = __toESM(require_data(), 1); +var import_preferences2 = __toESM(require_preferences(), 1); +async function loadView(config) { + const { kind, name, slug, defaultView, activeViewOverrides, queryParams } = config; + const preferenceKey = generatePreferenceKey(kind, name, slug); + const persistedView = (0, import_data2.select)(import_preferences2.store).get( + "core/views", + preferenceKey + ); + const baseView = persistedView ?? defaultView; + const page = queryParams?.page ?? 1; + const search = queryParams?.search ?? ""; + return mergeActiveViewOverrides( + { + ...baseView, + page, + search + }, + activeViewOverrides, + defaultView + ); +} + +// routes/template-part-list/view-utils.ts +var DEFAULT_VIEW = { + type: "grid", + sort: { + field: "date", + direction: "desc" + }, + fields: [], + titleField: "title", + mediaField: "preview" +}; +function getActiveViewOverridesForTab(area) { + if (area === "all") { + return {}; + } + return { + filters: [ + { + field: "area", + operator: "is", + value: area + } + ] + }; +} +async function ensureView(area, search) { + return loadView({ + kind: "postType", + name: "wp_template_part", + slug: "default-new", + defaultView: DEFAULT_VIEW, + activeViewOverrides: getActiveViewOverridesForTab(area ?? "all"), + queryParams: search + }); +} +function viewToQuery(view) { + const result = {}; + if (void 0 !== view.perPage) { + result.per_page = view.perPage; + } + if (void 0 !== view.page) { + result.page = view.page; + } + if (![void 0, ""].includes(view.search)) { + result.search = view.search; + } + if (void 0 !== view.sort?.field) { + result.orderby = view.sort.field; + } + if (void 0 !== view.sort?.direction) { + result.order = view.sort.direction; + } + const areaFilter = view.filters?.find( + (filter) => filter.field === "area" + ); + if (areaFilter) { + result.area = areaFilter.value; + } + return result; +} + +// routes/template-part-list/route.ts +var route = { + title: () => (0, import_i18n.__)("Template Parts"), + async canvas(context) { + const { params, search } = context; + const view = await ensureView(params.area, { + page: search.page, + search: search.search + }); + if (view.type !== "list") { + return void 0; + } + if (search.postIds && search.postIds.length > 0) { + const postId = search.postIds[0].toString(); + return { + postType: "wp_template_part", + postId, + isPreview: true, + editLink: `/types/wp_template_part/edit/${encodeURIComponent( + postId + )}` + }; + } + const query = viewToQuery(view); + const posts = await (0, import_data3.resolveSelect)(import_core_data.store).getEntityRecords( + "postType", + "wp_template_part", + { ...query, per_page: 1 } + ); + if (posts && posts.length > 0) { + const postId = posts[0].id.toString(); + return { + postType: "wp_template_part", + postId, + isPreview: true, + editLink: `/types/wp_template_part/edit/${encodeURIComponent( + postId + )}` + }; + } + return void 0; + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/template-part-list/route.min.asset.php b/src/wp-includes/build/routes/template-part-list/route.min.asset.php new file mode 100644 index 0000000000000..52f36a989d0d7 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/route.min.asset.php @@ -0,0 +1 @@ + array('wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-preferences'), 'version' => '6795d6b0e51228fa85b4'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template-part-list/route.min.js b/src/wp-includes/build/routes/template-part-list/route.min.js new file mode 100644 index 0000000000000..40bcd9ff9c811 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/route.min.js @@ -0,0 +1 @@ +var O=Object.create;var g=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var l=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of j(t))!K.call(e,i)&&i!==r&&g(e,i,{get:()=>t[i],enumerable:!(s=b(t,i))||s.enumerable});return e};var o=(e,t,r)=>(r=e!=null?O(z(e)):{},$(t||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e));var p=l((G,m)=>{m.exports=window.wp.data});var y=l((W,w)=>{w.exports=window.wp.coreData});var A=l((Y,h)=>{h.exports=window.wp.i18n});var _=l((J,V)=>{V.exports=window.wp.element});var f=l((X,T)=>{T.exports=window.wp.preferences});var D=o(p()),E=o(y()),v=o(A());var x=o(_(),1),P=o(p(),1),C=o(f(),1);function c(e,t,r){return`dataviews-${e}-${t}-${r}`}function u(e,t,r){if(!t)return e;let s=e;if(t.filters&&t.filters.length>0){let i=new Set(t.filters.map(n=>n.field)),a=(e.filters??[]).filter(n=>!i.has(n.field));s={...s,filters:[...a,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(s={...s,sort:t.sort}),s}var S=o(p(),1),I=o(f(),1);async function d(e){let{kind:t,name:r,slug:s,defaultView:i,activeViewOverrides:a,queryParams:n}=e,R=c(t,r,s),U=(0,S.select)(I.store).get("core/views",R)??i,k=n?.page??1,q=n?.search??"";return u({...U,page:k,search:q},a,i)}var M={type:"grid",sort:{field:"date",direction:"desc"},fields:[],titleField:"title",mediaField:"preview"};function B(e){return e==="all"?{}:{filters:[{field:"area",operator:"is",value:e}]}}async function F(e,t){return d({kind:"postType",name:"wp_template_part",slug:"default-new",defaultView:M,activeViewOverrides:B(e??"all"),queryParams:t})}function L(e){let t={};e.perPage!==void 0&&(t.per_page=e.perPage),e.page!==void 0&&(t.page=e.page),[void 0,""].includes(e.search)||(t.search=e.search),e.sort?.field!==void 0&&(t.orderby=e.sort.field),e.sort?.direction!==void 0&&(t.order=e.sort.direction);let r=e.filters?.find(s=>s.field==="area");return r&&(t.area=r.value),t}var ye={title:()=>(0,v.__)("Template Parts"),async canvas(e){let{params:t,search:r}=e,s=await F(t.area,{page:r.page,search:r.search});if(s.type!=="list")return;if(r.postIds&&r.postIds.length>0){let n=r.postIds[0].toString();return{postType:"wp_template_part",postId:n,isPreview:!0,editLink:`/types/wp_template_part/edit/${encodeURIComponent(n)}`}}let i=L(s),a=await(0,D.resolveSelect)(E.store).getEntityRecords("postType","wp_template_part",{...i,per_page:1});if(a&&a.length>0){let n=a[0].id.toString();return{postType:"wp_template_part",postId:n,isPreview:!0,editLink:`/types/wp_template_part/edit/${encodeURIComponent(n)}`}}}};export{ye as route}; diff --git a/src/wp-includes/build/routes/template-part/route.js b/src/wp-includes/build/routes/template-part/route.js new file mode 100644 index 0000000000000..09019e9730357 --- /dev/null +++ b/src/wp-includes/build/routes/template-part/route.js @@ -0,0 +1,16 @@ +// routes/template-part/route.ts +import { redirect } from "@wordpress/route"; +var route = { + beforeLoad: () => { + throw redirect({ + throw: true, + to: "/template-parts/list/$area", + params: { + area: "all" + } + }); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/template-part/route.min.asset.php b/src/wp-includes/build/routes/template-part/route.min.asset.php new file mode 100644 index 0000000000000..7faff671e5696 --- /dev/null +++ b/src/wp-includes/build/routes/template-part/route.min.asset.php @@ -0,0 +1 @@ + array(), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'fc7a9aa11a3a6d1e7659'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template-part/route.min.js b/src/wp-includes/build/routes/template-part/route.min.js new file mode 100644 index 0000000000000..9c9d6011425e5 --- /dev/null +++ b/src/wp-includes/build/routes/template-part/route.min.js @@ -0,0 +1 @@ +import{redirect as r}from"@wordpress/route";var e={beforeLoad:()=>{throw r({throw:!0,to:"/template-parts/list/$area",params:{area:"all"}})}};export{e as route}; diff --git a/src/wp-includes/build/routes/template/route.js b/src/wp-includes/build/routes/template/route.js new file mode 100644 index 0000000000000..a92aa069e8940 --- /dev/null +++ b/src/wp-includes/build/routes/template/route.js @@ -0,0 +1,17 @@ +// routes/template/route.ts +import { redirect } from "@wordpress/route"; +var route = { + beforeLoad: () => { + const isTemplateActivateEnabled = typeof window !== "undefined" && window.__experimentalTemplateActivate; + throw redirect({ + throw: true, + to: "/templates/list/$activeView", + params: { + activeView: isTemplateActivateEnabled ? "active" : "all" + } + }); + } +}; +export { + route +}; diff --git a/src/wp-includes/build/routes/template/route.min.asset.php b/src/wp-includes/build/routes/template/route.min.asset.php new file mode 100644 index 0000000000000..fb0f42057528f --- /dev/null +++ b/src/wp-includes/build/routes/template/route.min.asset.php @@ -0,0 +1 @@ + array(), 'module_dependencies' => array(array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '84e7d423597f7b5bb543'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/template/route.min.js b/src/wp-includes/build/routes/template/route.min.js new file mode 100644 index 0000000000000..828bbf7bb1c54 --- /dev/null +++ b/src/wp-includes/build/routes/template/route.min.js @@ -0,0 +1 @@ +import{redirect as t}from"@wordpress/route";var a={beforeLoad:()=>{let e=typeof window<"u"&&window.__experimentalTemplateActivate;throw t({throw:!0,to:"/templates/list/$activeView",params:{activeView:e?"active":"all"}})}};export{a as route}; From a5b7e666a5bd5510e74d9cc3e91547911d86f175 Mon Sep 17 00:00:00 2001 From: Sangu Manideep Reddy Date: Thu, 9 Apr 2026 11:35:11 +0530 Subject: [PATCH 2/2] Fix for wrong locale code in the admin for core/get-site-info` ability --- src/wp-includes/abilities.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/abilities.php b/src/wp-includes/abilities.php index 4c6db1ed830e0..d95da1159718c 100644 --- a/src/wp-includes/abilities.php +++ b/src/wp-includes/abilities.php @@ -111,7 +111,11 @@ function wp_register_core_abilities(): void { $result = array(); foreach ( $requested_fields as $field ) { - $result[ $field ] = get_bloginfo( $field ); + if ( 'language' === $field ) { + $result[ $field ] = str_replace( '_', '-', get_option( 'WPLANG' ) ?: 'en_US' ); + } else { + $result[ $field ] = get_bloginfo( $field ); + } } return $result;